Ich habe eine ASP.Net MVC-Ansicht, die Formulardaten an eine Controller-Aktion übermittelt. Ich versuche, jQuery zu verwenden, um das Formular über einen AJAX-Aufruf wie folgt zu senden:
$("#submit").click(function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: "/controller/action",
data: $("#form").serialize()
});
});
Das klappt super, die Formulardaten werden an dieController genau wie ich es will. Das Problem besteht darin, dass die Controller-Aktion eine Weiterleitung zurückgibt und nachdem das Formular abgeschickt wurde, leitet der Browser den Standort nicht an die URL weiter, die in der Weiterleitungsantwort angegeben ist. Mit Fiddler kann ich sehen, dass der Controller in der Tat die Umleitung zurückgibt und dass eine Anfrage für den durch die Weiterleitung spezifizierten Ort ausgegeben wird, aber der Browser niemals tatsächlich weiterleitet, die Formularseite wird immer noch angezeigt, nachdem der Klick-Handler ausgeführt wurde.
Ich habe versucht, einen $.ajax
Ruf das setzt window.location
. Dies funktioniert jedoch nicht idealaus ein paar Gründen. Erstens, da ich nicht weiß, wie ich den Umleitungsort im Erfolgs-Handler erreichen kann, muss ich den Standort fest codieren. Zweitens führt die Umleitung im Erfolgs-Handler tatsächlich dazu, dass zwei Anforderungen an den Umleitungsort gestellt werden Ich frage mich, ob es einen besseren Weg gibt, um das zu bekommen $.ajax
Rufen Sie an, um eine vom Server zurückgegebene Weiterleitung zu berücksichtigen.
Antworten:
0 für die Antwort № 1Die AJAX-Anfrage erhält die Umleitung.
Sie könnten Ihre AJAX-Anfrage die Umleitungs-URL zurückgeben lassen (und nicht eine 300 Location
), dann umleiten zu dieser URL in der AJAX-Success-Handler.