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

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

08.01.2018, 12:28. Показов 2020. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru