загрузка не запускает полный обработчик ajaxSetup по завершении - PullRequest
7 голосов
/ 17 февраля 2010

у меня

// Ajax setup
 $.ajaxSetup({
 beforeSend: function() {
 $('#general-ajax-load ').fadeIn();
 },
 complete: function() {
 $('#general-ajax-load ').fadeOut();
 }
});

при загрузке страницы, чтобы установить анимацию загрузки для всех моих вызовов ajax. Работает отлично, за исключением вызовов load (). Для нагрузок только до того, как инициируется отправка, и никогда не вызывается complete, что приводит к отображению анимации, которая никогда не исчезает.

Есть идеи?

Ответы [ 3 ]

5 голосов
/ 05 февраля 2013

Согласно http://bugs.jquery.com/ticket/4086#comment:4, «правильный» путь будет:

$(document).ajaxSend(function(event, jqXHR, settings) {
    $('#general-ajax-load ').fadeIn();
});

$(document).ajaxComplete(function(event, jqXHR, settings) {
    $('#general-ajax-load ').fadeOut();
});

Я только что провел некоторое тестирование, и, похоже, оно действительно работает во всех случаях (включая $.load).

2 голосов
/ 17 февраля 2010

Добавление успеха решило проблему, спасибо (могу поклясться, что пробовал раньше)

 $.ajaxSetup({
 beforeSend: function() {
 $('#general-ajax-load ').fadeIn();
 },
 complete: function() {
 $('#general-ajax-load ').fadeOut();
 }
 success: function() {
 $('#general-ajax-load ').fadeOut();
 }
});

:)

1 голос
/ 17 февраля 2010

В руководстве $.load написано:

... Это примерно эквивалентно $ .get (URL, данные, успех), кроме этого это метод, а не глобальная функция, и он имеет неявную функция обратного вызова .

Казалось бы, неявная функция обратного вызова $.load переопределяет обратный вызов complete в вашем $.ajaxSetup. Документация $.ajaxSetup гласит:

Все последующие вызовы Ajax с использованием любого функция будет использовать новые настройки, если не переопределено человеком звонки, до следующего вызова $ .AjaxSetup ().

Я думаю, что решение было бы заменить ваши $.load звонки на $.get (или более подробный $.ajax). Вы также можете попробовать использовать success.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...