Was ist der Unterschied zwischen
contentType: "application/json; charset=utf-8",
dataType: "json",
vs.
contentType: "application/json",
dataType: "text",
contentType
ist der an den Server gesendete HTTP- Header , der ein bestimmtes Format angibt. dataType
Sagen Sie jQuery, welche Art von Antwort zu erwarten ist? Die $.ajax()
Dokumentation enthält auch vollständige Beschreibungen dieser.
In Ihrem Fall ist die erste Bitte um die Antwort in sein UTF-8
, wird die zweite nicht. Der erste behandelt die Antwort als JavaScript-Objekt, der zweite behandelt sie als Zeichenfolge.
Das erste wäre also:
success: function(data) {
// get data, e.g. data.title;
}
Der Zweite:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
?(ps: die Antwort von Nick Craver ist falsch)
contentType gibt das Format der Daten an, die als Teil der Anforderung an den Server gesendet werden (sie können auch als Teil der Antwort gesendet werden, dazu später mehr).
dataType gibt das erwartete Format der Daten an, die vom Client (Browser) empfangen werden sollen.
Beide sind nicht austauschbar.
contentType
ist der an den Server gesendete Header, der das Format der Daten (dh den Inhalt des Nachrichtentexts) angibt, die an den Server gesendet werden. Dies wird bei POST- und PUT-Anforderungen verwendet. Wenn Sie eine POST-Anfrage senden, besteht der Nachrichtentext normalerweise aus übergebenen Parametern wie:==============================
Musteranfrage:
==============================
Die letzte Zeile über "name = sam & age = 35" ist der Nachrichtentext, und contentType gibt ihn als application / x-www-form-urlencoded an, da wir die Formularparameter im Nachrichtentext übergeben. Wir sind jedoch nicht nur auf das Senden der Parameter beschränkt, sondern können auch json, xml usw. senden (das Senden verschiedener Datentypen ist besonders bei RESTful-Webdiensten nützlich):
==============================
Musteranfrage:
==============================
Diesmal lautet der ContentType also: application / xml, denn genau das senden wir. Die obigen Beispiele zeigten eine Beispielanforderung. In ähnlicher Weise kann die vom Server gesendete Antwort auch den Content-Type-Header enthalten, der angibt, was der Server wie folgt sendet:
==============================
Beispielantwort:
==============================
dataType
Gibt das zu erwartende Antwortformat an. Es bezieht sich auf Accept Header. JQuery wird versuchen, basierend auf dem Inhaltstyp der Antwort darauf zu schließen.==============================
Musteranfrage:
==============================
Die obige Anfrage erwartet XML vom Server.
Was Ihre Frage betrifft,
Hier senden Sie JSON-Daten mit dem UTF8-Zeichensatz und erwarten JSON-Daten vom Server zurück. Gemäß den JQuery-Dokumenten für dataType
Was Sie also im Erfolgshandler erhalten, ist das richtige Javascript-Objekt (JQuery konvertiert das JSON-Objekt für Sie).
wohingegen
Hier senden Sie JSON-Daten, da Sie die Codierung gemäß den JQuery-Dokumenten nicht erwähnt haben.
und da dataType als Text angegeben ist, erhalten Sie im Erfolgshandler einfachen Text gemäß den Dokumenten für dataType.
quelle
gemäß Dokumentation :
"json"
: Wertet die Antwort als JSON aus und gibt ein JavaScript-Objekt zurück. In jQuery 1.4 werden die JSON-Daten streng analysiert. Jeder fehlerhafte JSON wird zurückgewiesen und ein Analysefehler wird ausgelöst. (Weitere Informationen zur korrekten JSON-Formatierung finden Sie unter json.org.)"text"
: Eine einfache Textzeichenfolge.quelle
Der jQuery Ajax Loader funktioniert nicht gut, wenn Sie zwei APIs gleichzeitig aufrufen. Um dieses Problem zu beheben, müssen Sie die APIs nacheinander mithilfe der
isAsync
Eigenschaft in der Ajax-Einstellung aufrufen . Sie müssen auch sicherstellen, dass die Einstellung keinen Fehler enthält. Andernfalls funktioniert der Lader nicht. ZB undefinierter Inhaltstyp, Datentyp für POST / PUT / DELETE / GET-Aufruf.quelle