Ich habe mehrere Threads dazu gesehen und alle Antworten ausprobiert (ASP.NET MVC JsonResult gibt 500 zurück).
Meine Ajax-Anfrage gibt einen 500 Internal Error zurück. Wenn ich debugge, komme ich nicht einmal zu meiner Aktion.
Hier ist mein Ajax-Aufruf:
$.ajax({
url: '@Url.Action("UpdateSortOrder", "FormItems")',
data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId },
type: 'POST',
success: function (data) {
console.log(data);
},
error: function (xhr, status, exception) {
console.log("Error: " + exception + ", Status: " + status);
}
});
Und meine Aktion:
[HttpPost]
public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId)
{
FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId);
return Json(updatedItem, JsonRequestBehavior.DenyGet);
}
Bei Verwendung der Chrome-Konsole sind dies die Antwortheader aus der Antwort:
HTTP/1.1 500 Interner Serverfehler Cache-Steuerung: privat Inhaltstyp: text/html; charset=utf-8 Server: Microsoft-IIS/7.5 X-AspNetMvc-Version: 3.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Datum: Dienstag, 18. Dezember 2012 21:53:41 GMT Inhaltslänge: 17041
Serverprotokolle zeigen keine Unterstatuscodes. Irgendeine Idee, was ich hier falsch mache? Ich verwende lieber POST statt GET.
Die Formulardaten werden wie folgt angezeigt:
itemToUpdateId:18ac5399-342e-4a39-9da1-3281a89501df
newParentItemId: null
newPreviousItemId:null
Welches ist richtig.
Ich habe versucht, contentType auf application/json und traditional = true zu setzen, wie in dieser Frage: Beim Senden von Ajax-Posts an mvc mit „application/json; charset=utf-8“ wird der Fehler 500 vom Vs-Webentwicklerserver zurückgegeben
Gleicher Fehler.
Haben Sie versucht, den rohen POST mit Fiddler anzuzeigen, um zu sehen, was über die Leitung geht?
– Biff MaGriff
18. Dezember 2012 um 22:18 Uhr
Können Sie uns mitteilen, wie Sie Ihre Routen festlegen?
– Kabaros
18. Dezember 2012 um 22:19 Uhr
Die Route funktioniert, im Moment verwendet sie nur die Standardroutenregel, die durch Hinzufügen eines Bereichs ausgefüllt wird. Wenn ich die Aktion ändere, um eine Ansicht zurückzugeben, und die URL eintippe, funktioniert sie, sodass die Route korrekt verarbeitet wird.
– InventoryMang
18. Dezember 2012 um 22:35 Uhr
@BiffMaGriff Ich habe das von Chrome aus gepostet, aber ich habe es jetzt herausgefunden, dank der erneuten Überprüfung dieses Fensters. Wenn ich die Registerkarte “Vorschau” des POST in der Chrome-Konsole überprüfe, wurde mir der eigentliche Fehler angezeigt, bei dem es sich um das zurückgegebene formItem handelte Die Aktion hatte einen Zirkelbezugsfehler!
– InventoryMang
18. Dezember 2012 um 22:43 Uhr