javascript - Diferențele dintre contentType și dataType în funcția ajax jQuery
Am următoarea funcție callback Jquery și am o mică îndoială în legătură cu ea (nu cunosc foarte bine Jquery):
$("form.readXmlForm").submit(function() {
// Riferimento all'elemento form che ha scatenato il submit
var form = $(this);
// Variabile che contiene il riferimento al bottone clickato
var button = form.children(":first");
$.ajax({ // Viene eseguita la chiamata AJAX
type: "POST", // Tipo di richiesta: POST
// URL verso quale viene inviata la richiesta
url: form.attr("action"),
// Dati XML inviati:
data: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><javaBean><foo>bar</foo><fruit>apple</fruit></javaBean>",
// Tipo di media type accettabile dalla response:
contentType: "application/xml",
dataType: "text",
success: function(text) {
MvcUtil.showSuccessResponse(text, button);
},
error: function(xhr) {
MvcUtil.showErrorResponse(xhr.responseText, button);
}
});
După cum puteți vedea, această funcție execută pur și simplu o cerere AJAX către backend setând parametrul pentru această cerere.
Am setat că trimit cererea către un URL, că cererea este o cerere POST și că datele pe care le trimit sunt următorul șir:
barapple
Am unele dificultăți să înțeleg care sunt diferențele dintre contentType și dataType
Cred că contentType specifică tipul de date care sunt acceptabile să fie primite în răspunsul HTTP, este corect?
Și dataType? Ce zici? Tipul de date pe care îl trimit în cererea HTTP?
În acest caz este „text” pentru că trimit un șir textual care reprezintă cod XML?
Răspuns #1
Din documentație:
contentType (implicit: 'application/x-www-form-urlencoded; charset=UTF-8')
Tip: Șir
Când trimiți date către server, folosește acest tip de conținut. Implicit este „application/x-www-form-urlencoded; charset=UTF-8”, ceea ce este potrivit în majoritatea cazurilor. Dacă treci explicit un tip de conținut la $.ajax(), atunci acesta va fi întotdeauna trimis către server (chiar dacă nu se trimit date). Dacă nu este specificat un set de caractere, datele vor fi transmise serverului folosind setul de caractere implicit al serverului; trebuie să decodezi acest lucru corespunzător pe partea serverului.
și :
dataType (implicit: Presupunere Inteligentă (xml, json, script sau html))
Tip: Șir
Tipul de date pe care te aștepți să-l primești înapoi de la server. Dacă nu este specificat niciunul, jQuery va încerca să-l deducă pe baza tipului MIME al răspunsului (un tip MIME XML va returna XML, în versiunea 1.4 JSON va returna un obiect JavaScript, în versiunea 1.4 script va executa scriptul, iar orice altceva va fi returnat ca șir de caractere).
Ei sunt practic opusul a ceea ce credeai că sunt.
Răspunsul #2
În engleză:
ContentType: Când trimiteți date către server, utilizați acest tip de conținut. Implicit esteapplication/x-www-form-urlencoded; charset=UTF-8, ceea ce este potrivit pentru majoritatea cazurilor.Acceptă: Tipul de conținut trimis în antetul cererii care spune serverului ce tip de răspuns va accepta în schimb. Depinde deDataType.DataType: Tipul de date pe care te aștepți să le primești înapoi de la server. Dacă nu este specificat niciunul, jQuery va încerca să îl deducă pe baza tipului MIME al răspunsului. Poate fitext, xml, html, script, json, jsonp.
