2010-06-25 2 views
11

Ich schreibe gerade alle meine Ajax-Aufrufe um die jquery-Methode (viel sauberer Code!) Zu verwenden und haben eine Standard-AjaxError-Funktion, wie folgt dargestellt:

$(document).ajaxError(function(event, request, settings){ 
    alert("there was some error.. boo"); 
}); 

mit einer eigenen definierten Fehlerfunktion Meines ajax-Aufruf, dass ich der Standard nicht oben will für Feuer:

$.ajax({ url: url, 
    success: function(data){ 
     // do something 
    }, 
    error: function (r, textStatus, errorThrown) { 
     // let's do something here regarding the error 
     alert("Oh no! Something went terribly wrong in here!"); 
     // just trying this to see if it will stop any other events (ie default ajaxError) 
     event.stopImmediatePropagation(); 
    } 
}); 

aber jetzt habe ich ein paar ajax-Aufrufe, wo ich einen Fehler erklären will Funktion im Ajax-Aufruf. Ich hatte gehofft, dass durch die Deklaration einer Fehlerfunktion im Ajax-Aufruf der Standardfehler-Aufruf, den ich definiert habe, ersetzt würde. Aber das scheint nicht der Fall zu sein, da ich weiterhin zuerst meinen Ajax-Funktionsfehler-Aufruf bekomme, dann sehe ich auch den obigen Code ausführen.

Ich habe versucht, event.stopImmediatePropagation() aus meiner Ajax-Fehlerfunktion heraus zu starten, in der Hoffnung, dass es weitere Ereignisse abbricht (dh: das Standardfehlerereignis), aber das hat nichts getan außer mir in Firefox zu sagen, dass "Ereignis" war undefiniert.

Irgendwelche Ideen? Ich hatte gehofft, ich müsste nicht durchgehen und für JEDEN Ajax-Aufruf eine Fehlerfunktion definieren. Wenn es darauf ankommt, werde ich es tun. Ich dachte, ich würde fragen.

Danke, Matt

Antwort

9

Es gibt eine global option auf $.ajax() dafür, ob oder nicht bestimmt jene global AJAX event handlers auszuführen, es ist einfach zu false gesetzt, wie folgt aus:

$.ajax({ 
    url: url, 
    global: false, 
    success: function(data){ 
     // do something 
    }, 
    error: function (r, textStatus, errorThrown) { 
     alert("Oh no! Something went terribly wrong in here!"); 
    } 
}); 
+2

Was passiert, wenn ich will nur Überschreiben Sie die Fehlerfunktion? Ich möchte alle anderen globalen Funktionen behalten, die gesetzt werden könnten (zB ajaxSend, ajaxComplete)? –

+2

@John - Lassen Sie einfach die Funktionen, die Sie nicht überschreiben möchten und die Globals verwendet werden :) –

Verwandte Themen