2010-10-19 17 views
5

to, co próbuję zrobić, to automatycznie uruchomić funkcję przed przejściem do metody $.ajax({success});. Mam to:

$("body").ajaxSuccess(
    function(event, XMLHttpRequest, ajaxOptions) { 
     alert("ajaxSuccess"); 
    } 
); 

i:

$.ajax({ 
    url: ".", 
    success: function() { 
     alert("success"); 
    } 
); 

Moim problemem jest to, że po raz pierwszy zobaczyć "sukces", a następnie "ajaxSuccess" czy miałby coś przeciwnego. Czy to możliwe? Jakieś inne rozwiązanie?

Problem jest taki sam z $ .ajaxError() ...

Dzięki

Odpowiedz

0

można używające following:

dataFilter(data, type) 

przechwycić żądania gdy po raz pierwszy wraca z serwer. Nie jest to dokładnie to, na co chciałeś go użyć, ale jest to uniwersalna rutyna przed sukcesem.

Błąd wstępny? może obsługa globalnego błędu zadziała dla ciebie?

var obj = { 
    someHandler: function(data, xmlObj, status) {}, 
    someHandler2: function(data, xmlObj, status) {}, 
    someErrorHandler: function(xmlObj, status, error) {}, 
    someErrorHandler2: function(xmlObj, status, error) {} 
} 

jQuery.ajax({ 
    success:function(data, xmlObj, status) { 
     // decide based on data what the run 2nd 
     if (data.success) { 
     obj.someHandler(data, xmlObj, status); 
     } 
     else { 
     obj.someHandler2(data, xmlObj, status); 
     } 
    }, 
    error: function(xmlObj, status, error) { 
     // decide based on data what to run 2nd 
     //same as above. 
    } 
}); 

Robię coś podobnego w jednym z moich projektów. Mam globalny obiekt Error, w którym uruchamiam procedurę obsługi błędów na podstawie TYPE błędu, który wraca z serwera. Stwierdziłem, że jest to łatwy i szybki sposób tworzenia dobrej obsługi błędów dla AJAX

+0

Witaj, problem polega na tym, że nie mogę odróżnić xhr.status w metodzie dataFilter i nie mam możliwości uruchomienia tej czy innej funkcji . W moim przypadku uruchomiłbym dwie oddzielne funkcje w każdym przypadku. –

+0

Jeśli wywołasz drugą funkcję, możesz w obu przypadkach użyć funkcji globalnego sukcesu/błędu i wywołać wyspecjalizowaną funkcję na końcu. Może jakiś obiekt, który decyduje, która funkcja dodatkowa wywoła? –

+0

Czy masz jakiś kawałek kodu, nie jestem pewien, aby zrozumieć bardzo dobrze ... :( –

Powiązane problemy