Ajax Request gibt HTTP-Fehler 500 zurück, wobei MVC und $.ajax-Aufruf mit POST verwendet werden?

Lesezeit: 3 Minuten

Benutzer-Avatar
SventoryMang

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


Nun, ich konnte herausfinden, was das Problem war, an meiner AJAX-Syntax oder sogar an der Aktion war nichts falsch. Es war nur so, dass mein zurückgegebenes Objekt einen Zirkelverweis enthielt. Ich konnte den tatsächlichen Fehler in der Chrome-Konsole sehen, indem ich auf die POST-Anfrage auf der Registerkarte „Netzwerk“ klickte und dann die Registerkarte „Vorschau“ ansah. Dadurch wurde die eigentliche Fehlermeldung angezeigt.

  • In den IE11-Entwicklertools konnte mithilfe der Registerkarte „Netzwerk“ > „Details“ > „Antworttext“ eine ähnliche Problembehandlung durchgeführt werden.

    – Jason Marsell

    24. Mai 2016 um 20:32 Uhr

  • Für alle anderen, die immer noch Probleme haben, sehen Sie sich diese Lösung an. Es enthält einen detaillierteren Fehler, den Fiddler und dergleichen nicht liefern konnten.

    – usr4896260

    6. März 2017 um 15:17 Uhr

  • Das dritte Mal, dass ich dieses Juwel einer Antwort gegoogelt habe – muss ich mir merken! (zuvor positiv bewertet)

    – JsAndDotNet

    24. April 2019 um 15:43 Uhr

  • In meinem Fall habe ich eine Ansicht zurückgegeben, die nicht existierte, als ich JSON hätte zurückgeben sollen. Blöder Fehler, der eine 500 auslöst. Wenn Sie die Netzwerkregisterkarte in einem beliebigen Browser verwenden, sehen Sie deutlich den Fehler von asp.net.

    – tnk479

    11. Juni 2019 um 23:06 Uhr

Alter Beitrag, alternative Antwort … Nur für den Fall, dass jemand hier landet …

Mein Problem wurde durch die Tatsache verursacht, dass meine Controller-Aktion, die ich aufgerufen habe, ein Partial View Action Result und die PartialView zurückgegeben hat .cshtml Datei wurde nicht auf dem Server veröffentlicht (war beim Veröffentlichen nicht im Visual Studio-Projekt “enthalten”).

Geiger ist ein großartiges Tool zum Abfangen von HTTP-Anforderungen, das sehr nützlich ist, um Antworten zwischen Client- und Serverseite zu debuggen. Öffnen Sie es einfach, wenn Sie das Problem in Ihrem Browser vermuten, und wenn der Fehler auftritt, öffnen Sie Fiddler und wählen Sie die Anfrage aus, und sehen Sie sich dann die Rohinformationen an.

Wenn Sie updatedItem nicht erfolgreich benötigen, geben Sie es nicht zurück, geben Sie einfach eine einfache Variable zurück

1158410cookie-checkAjax Request gibt HTTP-Fehler 500 zurück, wobei MVC und $.ajax-Aufruf mit POST verwendet werden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy