Wie gehe ich mit Ausnahmen um, die in einem Controller ausgelöst werden, wenn jquery ajax eine Aktion aufruft?
Zum Beispiel möchte ich einen globalen Javascript-Code, der auf jeder Art von Serverausnahme während eines Ajax-Aufrufs ausgeführt wird und die Ausnahmemeldung im Debug-Modus oder nur eine normale Fehlermeldung anzeigt.
Auf der Client-Seite werde ich eine Funktion für den Ajax-Fehler aufrufen.
Muss ich auf der Serverseite einen benutzerdefinierten Aktionsfilter schreiben?
asp.net-mvc
jquery
asp.net-mvc-3
Shawn Mclean
quelle
quelle
Antworten:
Wenn der Server einen anderen Statuscode als 200 sendet, wird der Fehlerrückruf ausgeführt:
und um einen globalen Fehlerbehandler zu registrieren, können Sie die folgende
$.ajaxSetup()
Methode verwenden:Eine andere Möglichkeit ist die Verwendung von JSON. Sie können also einen benutzerdefinierten Aktionsfilter auf den Server schreiben, der Ausnahmen abfängt und sie in eine JSON-Antwort umwandelt:
und dekorieren Sie dann Ihre Controller-Aktion mit diesem Attribut:
und schließlich aufrufen:
quelle
error
Rückruf wird ausgeführt.Nach dem Googeln schreibe ich eine einfache Ausnahmebehandlung basierend auf dem MVC-Aktionsfilter:
und schreibe in global.ascx:
und schreiben Sie dieses Skript dann auf das Layout oder die Masterseite:
Schließlich sollten Sie den benutzerdefinierten Fehler aktivieren. und dann genieße es :)
quelle
Leider ist keine der Antworten gut für mich. Überraschenderweise ist die Lösung viel einfacher. Rückkehr vom Controller:
Und behandeln Sie es als Standard-HTTP-Fehler auf dem Client, wie Sie möchten.
quelle
int
. Wenn ich das mache, wird das Ergebnis auch an denajax
success
Handler und nicht an denerror
Handler übergeben. Ist das das erwartete Verhalten?Ich habe eine schnelle Lösung gefunden, weil ich wenig Zeit hatte und es gut funktionierte. Obwohl ich denke, dass die bessere Option die Verwendung eines Ausnahmefilters ist, kann meine Lösung möglicherweise helfen, falls eine einfache Lösung benötigt wird.
Ich habe folgendes getan. In der Controller-Methode habe ich ein JsonResult mit der Eigenschaft "Success" in den Daten zurückgegeben:
Später beim Ajax-Aufruf habe ich nur nach dieser Eigenschaft gefragt, um zu wissen, ob ich eine Ausnahme hatte:
Hoffe das hilft. Glücklicher Code! : P.
quelle
In Übereinstimmung mit der Antwort von aleho ist hier ein vollständiges Beispiel. Es funktioniert wie ein Zauber und ist super einfach.
Controller-Code
Javascript-Code in der Ansicht
Hoffe das hilft jemand anderem!
quelle
Für die Behandlung von Fehlern aus Ajax-Aufrufen auf der Clientseite weisen Sie der
error
Option des Ajax-Aufrufs eine Funktion zu .Um einen Standard global festzulegen, können Sie die hier beschriebene Funktion verwenden: http://api.jquery.com/jQuery.ajaxSetup .
quelle