MVC Controller Rückgabe Inhalt vs Return Json Ajax

8

Warum schlägt die Rückkehr von Content im MVC manchmal beim Ajax-Callback fehl, während JSON auch bei einfachen String-Objekten funktioniert?

Auch wenn es fehlschlägt, sind die Daten immer noch verfügbar, wenn Sie im Callback immer darauf zugreifen wollten ...

Aktualisierung:

Wenn ich den contentType im Ajax-Aufruf auf text/xml setze, gibt die Antwort die Fehlermeldung nicht mehr ein.

AJAX:

%Vor%

Controller-Aktion, die (manchmal) fehlschlägt

Auch wenn es fehlschlägt, sind die Daten immer noch verfügbar.

%Vor%

Controller-Aktion, die immer funktioniert

%Vor%     
silencedmessage 22.09.2014, 20:21
quelle

1 Antwort

14

Die Verwendung von Content(Foo); sendet eine Antwort, die nicht den Header des MIME-Typs enthält. Dies geschieht, weil Sie ContentType nicht festlegen, wenn Sie diese Überladung verwenden. Wenn der Inhaltstyp nicht festgelegt ist, versucht jQuery, den Inhaltstyp zu erraten . Ob dies erfolgreich ist oder nicht, hängt vom tatsächlichen Inhalt und dem zugrundeliegenden Browser ab. Siehe hier :

  

dataType (Standard: Intelligentes Raten (xml, json, script oder html))

Json(...) andererseits explizit setzt den Inhaltstyp auf "application/json" , sodass jQuery genau weiß, wie der Inhalt behandelt werden soll.

Sie können konsistente Ergebnisse von Content erhalten, wenn Sie die 2nd überladen Sie und geben Sie einen ContentType an:

%Vor%

Wenn Sie jedoch immer mit JSON arbeiten, verwenden Sie lieber JsonResult

%Vor%     
Mrchief 22.09.2014, 21:02
quelle

Tags und Links