2010-02-17 19 views
6

mamobciążenia nie powoduje ajaxSetup kompletny obsługi kompletnych

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

na stronie obciążenia ustawić animację ładowania dla wszystkich moich ajax połączeń. Działa idealnie, z wyjątkiem wywołań load(). W przypadku obciążeń tylko przed wywołaniem jest uruchamiana, a komenda complete nigdy nie jest wywoływana, co powoduje wyświetlenie animacji, która nigdy nie znika.

Każdy pomysł?

Odpowiedz

4

Według http://bugs.jquery.com/ticket/4086#comment:4, "poprawny" sposób byłoby:

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

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

Po prostu wykonałem kilka testów i faktycznie wydaje się, że działają we wszystkich przypadkach (w tym $.load).

1

Instrukcja $.load mówi:

... To jest mniej więcej odpowiednikiem $ .get (url, data, sukcesu), z wyjątkiem tego jest to metoda niż funkcja globalna i ma niejawna funkcja oddzwaniania.

Wydawałoby się, że niejawna funkcja zwrotna $.load „s jest przesłanianie complete zwrotnego w $.ajaxSetup. Dokumentacja $.ajaxSetup mówi:

Wszystkie późniejsze Ajax połączeń za pomocą dowolnego funkcję będzie korzystać z nowych ustawień, chyba że zostaną zamienione przez poszczególne rozmów, aż do następnego pw $ .ajaxSetup().

Myślę, że rozwiązaniem byłoby zastąpienie połączeń $.load z $.get (lub więcej komunikatów $.ajax). Możesz także spróbować użyć opcji success.

2

Dodawanie sukces rozwiązaniu problemu, dzięki (mogę przysiąc próbowałem go przed)

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

:)

+0

Co jeśli połączenie AJAX spowoduje błąd (np. HTTP 401). Czy wywoływacz sukcesu jest również wywoływany? –

+0

Myślę, że nie, ale należy wypełnić. – umpirsky

Powiązane problemy