Die Ressource wird als Dokument interpretiert, jedoch mit der MIME-Anwendung / json-Warnung in den Chrome-Entwicklertools übertragen
Habe ich Folgendes snippet verwendet die jQuery-Form-plugin, um ein post-Formular an den server (ajax).
var options = {
dataType: "json",
success: function(data) {
alert("success");
}
};
$form.ajaxSubmit(options);
Form:
<form enctype="multipart/form-data" id="name_change_form" method="post" action="/my_account/">
<div style='display:none'><input type='hidden' name='csrfmiddlewaretoken' value='6c9b552aaba88b8442077e2957e69303' /></div>
<table>
<tr>
<td>
<label for="id_first_name">First name</label>:
</td>
<td>
<input name="first_name" value="Patrick" maxlength="30" type="text" id="id_first_name" size="30" />
</td>
</tr>
<tr>
<td>
<label for="id_last_name">Last name</label>:
</td>
<td>
<input name="last_name" value="Sung" maxlength="30" type="text" id="id_last_name" size="30" />
</td>
</tr>
</table>
<input type="hidden" name="form_id" value="name_change_form" />
</form>
Der ajax-Implementierung ist in Ordnung. Aber ich erhalte eine Warnung
Ressource interpretiert, als Dokument, sondern übertragen mit MIME-type application/json
in den Chrome Developer Tools. Ich möchte herausfinden, warum die Warnung, oder noch besser, einen Weg, es zu lösen.
Ich geändert $.post
statt, und wie durch Zauberhand war der Fehler Weg seitdem. Ich habe keine Ahnung, warum $.post
funktioniert aber nicht $form.ajaxSubmit
. Wenn jemand bieten kann, Ihre Erklärung, dass wäre toll. Zumindest dieses problem ist gelöst. Unten ist der neue code.
var url = $form.attr("action");
$.post(
url,
$form.serialize(),
function(data) {
alert("success");
},
"json"
);
InformationsquelleAutor der Frage tamakisquare | 2011-08-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Stand vor dem gleichen Fehler. Die Lösung, die für mich gearbeitet ist:
Nun den Browser (Chrome, Firefox und IE8) nicht eine Fehlermeldung zu geben.
InformationsquelleAutor der Antwort HB.
Diese Art von Warnungen sind in der Regel gekennzeichnet, da der Anfrage-HTTP-Header.
Speziell die Accept-request-header.
Die MDN-Dokumentation für den HTTP-Header Staaten
The Accept request HTTP header advertises which content types, expressed as MIME types, the client is able to understand. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice with the Content-Type response header. Browsers set adequate values for this header depending of the context where the request is done....
application/json ist wahrscheinlich nicht auf der Liste der MIME-Typen in den Accept-header vom browser gesendeten daher die Warnung.
Lösung
Benutzerdefinierte HTTP-Header können nur gesendet werden programmgesteuert über XMLHttpRequest oder einen der js library-Wrapper implementieren.
InformationsquelleAutor der Antwort Kudehinbu Oluwaponle
Ist es eigentlich eine Macke im Chrom, nicht die JavaScript-Bibliothek. Hier ist der fix:
Um zu verhindern, dass die Nachricht erscheinen und ermöglichen auch chrome zum Rendern der Antwort schön, wie JSON in der Konsole Anhängen einer Abfragezeichenfolge auf Ihre Anfrage-URL.
e.g
InformationsquelleAutor der Antwort John
Ich nahm einen anderen Ansatz. Ich wechselte zu verwenden $.post und der Fehler ist Weg seitdem.
InformationsquelleAutor der Antwort tamakisquare
Mir das passiert, und einmal habe ich entfernt: enctype="multipart/form-data"
Es begann ohne Warnung
InformationsquelleAutor der Antwort daviddv
können Sie einfach die JSON verwenden.stringify(options) konvertieren von JSON-Objekt to string vor dem senden, dann Warnung entlassen und funktioniert einwandfrei
InformationsquelleAutor der Antwort driftcrow
Verwenden
dataType: "jsonp"
. Ich hatte den gleichen Fehler vor. Es fest für mich.InformationsquelleAutor der Antwort Roland Kákonyi