Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400

Выполнение скрипта после подгрузки

08.01.2018, 12:28. Показов 2061. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет!

Получаю через AJAX часть страницы с кнопкой и скрипт обработки этой кнопки в котором также написан AJAX, почему то не получаю результат, как научиться проверять?

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
if ($_POST['phrase'] == 'add'){
            $id = $_POST['id'];
            $idproject = $_SESSION['id_project'];
            $userid = $_SESSION['user_id'];
 
            $result = "$id $idproject $userid";
        }
 
        if ($_POST['menu_link'] == 'vvod4'){
            $result .= '<div class = "promo">
                <div class = "promoImg"></div>
                <div class = "promoZag">Выберите подходящие фразы</div>
                <div class = "promoText">';
                        $prePhrase=DB::query("SELECT * FROM `new_phrases_pre` WHERE `status` = '1'");
                        $check = DB::num_rows($prePhrase);
                        if ($check > 0) {
                            while ($row = DB::fetch_object($prePhrase)) {
                                $phrase = $row->phrase;
                                $id = $row->id;
                                $result .= '<div style="display: block; height: 30px; padding-bottom: 5px;"><p style="display: inline-block; line-height: 30px; font-size: 1.2em;">'.$phrase.'</p><button style="display: inline-block; width: 200px; float: right; height: 30px; font-size: 1em;" name="send" id="phrase_'.$id.'">Выбрать</button></div>';
                                $result .= '<script>$(document).on("click", "#phrase_'.$id.'", function(e){
        e.preventDefault();
        $.ajax({
            url: "tmpl/obrabotka.php",
            type:"post",
            data: {phrase: "add", id:"'.$id.'" },
            success:function(loader){
                $("#wrapper").html(loader);
            }
        });
    }); </script>';
                            }
                        } else {
                            $result .= "<p>Пусто</p>";
                        }
            $result .= '</div>
            </div>';
        }
И может вообще такое можно делать как то по другому?
Задача вообще такая: получать строки из БД, к каждой строке добавлять кнопку, по нажатию кнопки эта строка удаляется из БД (этот кусок убран пока из кода, ибо я даже не могу получить на выводе хоть что то...) и данные вновь подгружаются, но уже без этой строки.

Добавлено через 13 часов 12 минут
Оказывается все работает, но просто я код обработки phrase = add засунул в участок кода
PHP
1
if (isset($_POST['menu_link'])) {
я решил проверять работоспособность добавив в success alert. В итоге если я кликну по одной строке - alert отрабатывает, затем кликаю по третей строке - alert отрабатывает 2 раза, и так далее с каждым разом alert работает на 1 раз больше.

Добавлено через 2 часа 25 минут
В общем после каждого клика количество используемой памяти увеличивается)) Как с этим бороться?

Добавлено через 4 минуты
я так подозреваю что это отголосок вопроса выше о alert`ах... скрипт с каждым разом все чаще выполняется...

Добавлено через 1 минуту
Смотрю Network там ооооочень много обращений на файл obrabotka.

Добавлено через 15 минут
короче я понял что надо как то UNBIND делать, сейчас ищу как...

Добавлено через 3 минуты
JavaScript
1
2
        $( "#phrase_'.$id.'").unbind( "click" );
        $( "#del_'.$id.'").unbind( "click" );
Попробовал так, но не помогает

Добавлено через 38 секунд
это конечно же в PHP коде написано
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.01.2018, 12:28
Ответы с готовыми решениями:

Выполнение скрипта сразу после загрузки страницы
Добрый день. Сложилась проблема. Есть Яваскрипт который так скажем делает текст резиновым, при изменении размера экрана браузера...

Выполнение скрипта после нажатия на кнопку и перезагрузки страницы
Здравствуйте! Нажимаю на кнопку, страница перезагружается но скрипт не выполняется $('#go_post').click(function() { ...

Работа с селекторами, после подгрузки html через ajax
Добрый день! Подскажите как сделать, что бы в подгруженный html была возможность работать с ним другими функциями. Кнопка вызывает...

6
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
08.01.2018, 12:42  [ТС]
Вот 3 раза кликнул, на фотке видно что с каждым разом obrabotka.php выполняется в 2 раза больше.
Миниатюры
Выполнение скрипта после подгрузки  
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
08.01.2018, 12:51
В общем случае это делается не так.
Вам надо написать одну универсальную функцию для обработки ваших подгружаемых элементов. На сервере формируете только разметку, необходимые данные (id записи и т. д.) указывайте в data-* атрибутах - потом эти данные будете брать из скрипта на клиенте и выполнять необходимые действия.
0
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
08.01.2018, 12:56  [ТС]
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
$result .= '
    <script>
    $(function(){
        $("#phrase_'.$id.'").one("click", function(e){
            e.preventDefault();
            $.ajax({
                url: "tmpl/obrabotka.php",
                type:"post",
                data: {phrase: "add", id: "'.$id.'" },
                success:function(loader){
                    $(this).unbind( "click" );
                    $("#wrapper").html(loader);
                }
            });
            return false;
        });
        $("#del_'.$id.'").one("click", function(e){
            e.preventDefault();
            $.ajax({
                url: "tmpl/obrabotka.php",
                type:"post",
                data: {phrase: "del", id: "'.$id.'" },
                success:function(loader){
                    $(this).unbind( "click" );
                    $("#wrapper").html(loader);
                }
            });
            return false;
        }); 
    });
    </script>';
Вот так переписал всё заработало)

Добавлено через 49 секунд
Цитата Сообщение от j2FunOnly Посмотреть сообщение
В общем случае это делается не так.
А можно подробнее с примером, пожалуйста?
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
08.01.2018, 13:08
Лучший ответ Сообщение было отмечено vino0s как решение

Решение

Без серверной части.
HTML5
1
2
3
4
<button id="btn-add">
  Add
</button>
<div id="list"></div>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var id = 0;
 
// имитация запроса к серверу, будто бы пришел ответ с разметкой
var getData = function() {
  return `
    <div class="list-item" data-id="${++id}">
        list item text ${id}
      <button class="btn delete">Delete</button>
    </div>
  `
}
 
$('#btn-add').click(function() {
  $('#list').append(getData());
});
 
/**
 * Собственно достаточно одной функции для обработки подгружаемых элементов.
 * Так как обработчики можно назначать только существующим элементам,
 * необходимо делегировать клик родительскому элементу.
 */
$('#list').on('click', '.delete', function() {
  var $parent = $(this).closest('.list-item');
 
  console.log('Record with id: ' + $parent.data('id'));
  // тут мы получили id, можно отправить ajax запрос на сервер и т. д.
 
  $parent.slideUp(200, function() {
    $(this).remove()
  });
});
https://codepen.io/anon/pen/LeeWOQ?editors=0011
1
28 / 22 / 15
Регистрация: 29.11.2017
Сообщений: 75
09.01.2018, 00:28

Не по теме:

html+css+js+php+sql = один файл! Какая крутотень в этом разбираться)



Добавлено через 9 минут

Не по теме:

А потом начнут отправлять запросы в бд с переменными без надлежащей проверки.
Вот заказчик тогда повеселится после первой же недели в продакшене)

0
11 / 11 / 8
Регистрация: 26.03.2014
Сообщений: 400
09.01.2018, 10:25  [ТС]
Цитата Сообщение от МихаилБасов Посмотреть сообщение
Какая крутотень в этом разбираться
Было бы кому разбираться ещё)) Так то большая часть разделена... Просто когда делаю что то чего нет, то сначала в одном файле, чтоб не бегать с файла к файлу) Скажу больше - GitHub не используется)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2018, 10:25
Помогаю со студенческими работами здесь

Обновление подсказок плагина .mTip, после подгрузки контента аяксом
Всем здравствуйте, есть страница, на которой работают плагин подсказок mTip, после аякса, возникла проблема,видимо плагин надо...

Выполнение скрипта
Есть php файл который заносит определенное значение в БД. Как вызывать этот файл, не перезагружая страницу. Слышал про ajax, но толком...

Постоянное выполнение скрипта?
Доброго времени суток, суть: есть скрипт jquery он плавно меняет текст, но есть одна проблема -- он не зациклен. Что можно с этим поделать?...

Постоянное выполнение скрипта
Доброго времени суток! Делаю переключалку с обычного на жирное начертание шрифта,столкнулся с такой проблемой переключает только один раз...

Подключение и выполнение скрипта
Только начал юзать JQuery. Подскажите, что не так? Окошко не вылазит. &lt;script type=&quot;text/javascript&quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru