Не срабатывает AJAX запрос, после повторного получения формы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
aasavelev
Сообщения: 16
Зарегистрирован: 2015.05.17, 14:49

Не срабатывает AJAX запрос, после повторного получения формы

Сообщение aasavelev » 2020.01.19, 07:07

Здравствуйте.
На событие формы submit добавляю отправку запроса AJAX:

Код: Выделить всё

$.ajax({
            url: action,
            type: method,
            data: data,
            dataType: 'html',
            success: function (response) {
                $('.cart-scroll').html(response);               
            },
            error: function () {
                alert('Произошла ошибка');
            }
        });

Ответом на данный запрос приходит блок div содержащий, форму на которая должен быть на событие submit добавлен AJAX запрос выше.

Код: Выделить всё

<form method="post" action="<?= Url::to(['basket/add']); ?>" class="change_cart minus-to-basket">
                                        <input type="hidden" name="id" value="<?=$item['id'] ?>">
                                        <input type="hidden" name="count" value="-1">
                                            <?=Html::hiddenInput(Yii::$app->request->csrfParam, Yii::$app->request->csrfToken);?>
                                            <button type="submit" class="btn">
                                                <i class="fa fa-shopping-cart"></i>
                                                <?=Html::img('@web/images/minus.png');?>
                                            </button>
                                    </form>
Когда первый раз страницу загрузил и нажал на кнопку формы, то запрос отработал как надо.
Но когда повторно нажимаю кнопку запрос AJAX не срабатывает.
Я понимаю что когда страница загрузилась событие подцепилось на эту форму,но потом когда повторно форма пришла уже не подцепляет.
Подскажите как можно устранить данную проблему

aasavelev
Сообщения: 16
Зарегистрирован: 2015.05.17, 14:49

Re: Не срабатывает AJAX запрос, после повторного получения формы

Сообщение aasavelev » 2020.01.19, 10:11

Разобрался. Проблема и была в том что после загрузки страницы на новые элементы и не подключалось.
Необходимо было сделать так:
$('parent_static').on('event', 'children_dinamic', handler);

Где parent_static - это статичный родительский элемент (лучше ближайший, но подойдёт и body), event - событие, children_dinamic - дочерний динамический элемент, на котором обработчик и должен сработать. При этом указатель this или объект jQuery $(this) в обработчике - именно дочерний динамический элемент.

yiiliveext
Сообщения: 867
Зарегистрирован: 2019.08.13, 01:49

Re: Не срабатывает AJAX запрос, после повторного получения формы

Сообщение yiiliveext » 2020.01.19, 11:29

aasavelev писал(а):
2020.01.19, 10:11
Необходимо было сделать так:
$('parent_static').on('event', 'children_dinamic', handler);

Где parent_static - это статичный родительский элемент (лучше ближайший, но подойдёт и body), event - событие, children_dinamic - дочерний динамический элемент, на котором обработчик и должен сработать. При этом указатель this или объект jQuery $(this) в обработчике - именно дочерний динамический элемент.
Клёво, это называется делегирование событий, основы JavaScript.

Ответить