Risposte:
contentType
è l' intestazione HTTP inviata al server, specificando un formato particolare. dataType
stai dicendo a jQuery che tipo di risposta aspettarsi. La $.ajax()
documentazione contiene anche descrizioni complete di questi.
Nel tuo caso particolare, il primo sta chiedendo la risposta di essere in UTF-8
, il secondo non si preoccupa. Anche il primo tratta la risposta come un oggetto JavaScript, il secondo la tratta come una stringa.
Quindi il primo sarebbe:
success: function(data) {
// get data, e.g. data.title;
}
Il secondo:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
?
(ps: la risposta data da Nick Craver non è corretta)
contentType specifica il formato dei dati inviati al server come parte della richiesta (può essere inviato anche come parte della risposta, ne parleremo più avanti).
dataType specifica il formato previsto dei dati che devono essere ricevuti dal client (browser).
Entrambi non sono intercambiabili.
contentType
è l'intestazione inviata al server, che specifica il formato dei dati (ovvero il contenuto del corpo del messaggio) che si trova sul server. Viene utilizzato con richieste POST e PUT. Di solito quando si invia una richiesta POST, il corpo del messaggio comprende parametri passati come:==============================
Esempio di richiesta:
POST /search HTTP/1.1
Content-Type: application/x-www-form-urlencoded
<<other header>>
name=sam&age=35
==============================
L'ultima riga sopra "nome = sam & age = 35" è il corpo del messaggio e contentType lo specifica come application / x-www-form-urlencoded poiché stiamo passando i parametri del modulo nel corpo del messaggio. Tuttavia non ci limitiamo a inviare solo i parametri, possiamo inviare json, xml, ... in questo modo (l'invio di diversi tipi di dati è particolarmente utile con i servizi Web RESTful):
==============================
Esempio di richiesta:
POST /orders HTTP/1.1
Content-Type: application/xml
<<other header>>
<order>
<total>$199.02</total>
<date>December 22, 2008 06:56</date>
...
</order>
==============================
Quindi ContentType questa volta è: application / xml, perché è quello che stiamo inviando. Gli esempi precedenti hanno mostrato una richiesta di esempio, allo stesso modo la risposta inviata dal server può anche avere l'intestazione Content-Type che specifica ciò che il server sta inviando in questo modo:
==============================
risposta del campione:
HTTP/1.1 201 Created
Content-Type: application/xml
<<other headers>>
<order id="233">
<link rel="self" href="http://example.com/orders/133"/>
<total>$199.02</total>
<date>December 22, 2008 06:56</date>
...
</order>
==============================
dataType
specifica il formato della risposta da aspettarsi. È correlato all'intestazione Accept. JQuery proverà a dedurlo in base al tipo di contenuto della risposta.==============================
Esempio di richiesta:
GET /someFolder/index.html HTTP/1.1
Host: mysite.org
Accept: application/xml
<<other headers>>
==============================
La richiesta sopra è in attesa di XML dal server.
Per quanto riguarda la tua domanda,
contentType: "application/json; charset=utf-8",
dataType: "json",
Qui si inviano dati json utilizzando il set di caratteri UTF8 e ci si aspetta che i dati json vengano restituiti dal server. Secondo i documenti JQuery per dataType,
Il tipo json analizza il file di dati recuperato come oggetto JavaScript e restituisce l'oggetto costruito come dati risultato.
Quindi, ciò che ottieni nel gestore del successo è un oggetto javascript corretto (JQuery converte l'oggetto json per te)
mentre
contentType: "application/json",
dataType: "text",
Qui stai inviando dati json, dal momento che non hai menzionato la codifica, secondo i documenti JQuery,
Se non viene specificato alcun set di caratteri, i dati verranno trasmessi al server utilizzando il set di caratteri predefinito del server; è necessario decodificarlo in modo appropriato sul lato server.
e poiché dataType è specificato come testo, ciò che ottieni nel gestore dei successi è un testo semplice, secondo i documenti per dataType,
I tipi di testo e xml restituiscono i dati senza elaborazione. I dati vengono semplicemente passati al gestore del successo
come da documenti :
"json"
: Valuta la risposta come JSON e restituisce un oggetto JavaScript. In jQuery 1.4 i dati JSON vengono analizzati in modo rigoroso; qualsiasi JSON non valido viene rifiutato e viene generato un errore di analisi. (Vedi json.org per maggiori informazioni sulla corretta formattazione JSON.)"text"
: Una stringa di testo semplice.Il caricatore jQuery Ajax non funziona bene quando si chiamano due API contemporaneamente. Per risolvere questo problema devi chiamare le API una ad una usando la isAsync
proprietà nell'impostazione Ajax. È inoltre necessario assicurarsi che non vi siano errori nell'impostazione. Altrimenti, il caricatore non funzionerà. Ad esempio un tipo di contenuto non definito, un tipo di dati per la chiamata POST / PUT / DELETE / GET.