#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)