Вызов load() после успешного выполнения ajax

#jquery #ajax

#jquery #ajax

Вопрос:

Я пытаюсь выполнить частичную перезагрузку страницы после успешного завершения моего сообщения ajax. Я попытался поместить функцию load() в обратный вызов успеха, но она никогда не срабатывает. Я знаю, что это не проблема с самой функцией load(), потому что я могу запустить ее в консоли, и она работает нормально. Как мне запустить его при успешном выполнении? Спасибо.

     $("#saveNewTask").click(function () {
        $.ajax({
            cache: false,
            url: url,
            data: data,
            type: "POST",
            error: function (e) {
                console.log(e);
                alert("Error creating new task");
            },
            success: function (response) {
                $('#mainTaskWrapper').load('/Tasks #mainTaskWrapper');
            }
        });
    });
  

Комментарии:

1. '/Tasks #mainTaskWrapper' кажется, это неправильный URL-адрес?

2. @ArturFilipiak вы правы. это URL /Tasks -адрес и селектор #mainTaskWrapper . это правильно.

3. Скорее всего, либо $('#mainTaskWrapper') не существует, либо ваш ajax-запрос не выполняется.

4. @KevinB Похоже, проблема в том, что я создаю сообщение ajax из iframe (окно kendo) и должен был использовать $('#mainTaskWrapper', window.parent.document); для выбора div. Однако это тоже не сработало. Я просто создал событие на родительской странице, чтобы перезагрузить частичную страницу и запустить это событие из функции успеха iframe. Не очень, но пока работает.

5. Вот что у меня было fwiw: var mainWrapper = $('#mainTaskWrapper', window.parent.document), mainWrapperId = mainWrapper.attr('id'); $(mainWrapper).load('/Tasks #' mainWrapperId)

Ответ №1:

Понял это.. Я вызывал сообщение ajax из iframe, и на #mainTaskWrapper этой странице не было ничего, кроме родительского документа. Я должен был получить элемент с помощью $('#mainTaskWrapper', window.parent.document) .

Вот мой окончательный код для обновления div в родительском документе. var mainWrapper = $('#mainTaskWrapper', window.parent.document), mainWrapperId = mainWrapper.attr('id'); $(mainWrapper).load('/Tasks #' mainWrapperId)