Ich habe diese Frage gelesen und den Ansatz umgesetzt, der für die Einstellung der Antwort angegeben wurde HTTP-Statuscode auf 278, um zu vermeiden, dass der Browser die Weiterleitungen transparent handhabt. Obwohl dies funktionierte, war ich ein wenig unzufrieden, da es ein bisschen wie ein Hack ist.
Nach weiterem Herumprobieren habe ich diesen Ansatz verworfen und verwendet JSON . In diesem Fall haben alle Antworten auf AJAX-Anfragen die Statuscode 200 und der Körper der Antwort enthält ein JSON-Objekt, das auf dem Server erstellt wird. Das JavaScript auf dem Client kann dann das JSON-Objekt verwenden, um zu entscheiden, was es tun soll.
Ich hatte ein ähnliches Problem wie Sie. Ich führe eine AJAX-Anfrage, die 2 mögliche Antworten hat: eine, die leitet um. den Browser auf eine neue Seite und eine, die Ersetzt ein bestehendes HTML-Formular auf der aktuellen Seite durch ein neues zu ersetzen. Der jQuery-Code dazu sieht etwa so aus:
$.ajax({
type: "POST",
url: reqUrl,
data: reqBody,
dataType: "json",
success: function(data, textStatus) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
} else {
// data.form contains the HTML for the replacement form
$("#myform").replaceWith(data.form);
}
}
});
Das JSON-Objekt "data" wird auf dem Server so aufgebaut, dass es 2 Mitglieder hat: data.redirect
y data.form
. Ich fand diesen Ansatz viel besser.
1 Stimmen
(nicht eine Antwort als solche) - Ich habe dies in der Vergangenheit durch Bearbeiten der Jquery-Bibliothek und Hinzufügen einer Prüfung für die Login-Seite auf jedem XHR abgeschlossen getan. Nicht die beste Lösung, weil es jedes Mal getan werden müsste, wenn Sie aktualisieren, aber es löst das Problem.
1 Stimmen
Siehe dazugehörige Frage: stackoverflow.com/questions/5941933/
0 Stimmen
El
HttpContext.Response.AddHeader
und prüfen Sie den Erfolg von ajaxsetup6 Stimmen
Warum kann der Server nicht 401 zurückgeben? In diesem Fall können Sie ein globales $.ajaxSetup haben und den Statuscode verwenden, um die Seite umzuleiten.
1 Stimmen
Dieser Link doanduyhai.wordpress.com/2012/04/21/ gibt mir die richtige Lösung
0 Stimmen
Schauen Sie sich bitte an diese Antwort .