Различия между contentType и dataType в функции ajax jQuery
У меня есть следующая функция обратного вызова Jquery, и у меня есть небольшое сомнение в этом (я не очень хорошо знаю 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);
}
});
Как вы можете видеть, эта функция просто выполняет запрос AJAX на серверную установку параметра для этого запроса.
Я установил, что отправляю запрос по URL-адресу, что запрос является запросом POST и что данные, которые я отправляю, являются следующей строкой:
"barapple"
У меня есть некоторые трудно понять, в чем разница между contentType и тип
думаю, что contentType укажите тип данных, которые приемлемы для получения в HTTP-ответе, правильно ли это?
и "тип данных"? Что скажешь? Тип данных, которые я отправляю в HTTP-запросе?
в этом случае это "текст", потому что я посылаю текстовую строку, которая rappresent XML-код?
2 ответа:
с документация:
contentType (по умолчанию: 'application/x-www-form-urlencoded; charset=UTF-8')
Тип: Строка
при отправке данных на сервер, использовать этот тип контента. По умолчанию используется "application / x-www-form-urlencoded; charset=UTF-8", что подходит для большинства случаев. Если вы явно передаете тип контента в $.ajax (), то он всегда будет отправлен на сервер (даже если данные не отправляются). Если кодировка отсутствует указанные данные будут переданы на сервер с использованием кодировки по умолчанию сервера; вы должны декодировать это соответствующим образом на стороне сервера.
и:
тип данных (по умолчанию: Intelligent Guess (xml, json, script или html))
Тип: Строка
тип данных, которые вы ожидаете от сервера. Если ни один не указан, jQuery попытается вывести его на основе типа MIME ответа (тип MIME XML будет yield XML, в 1.4 JSON даст объект JavaScript, в 1.4 script выполнит скрипт, а все остальное будет возвращено в виде строки).
Они по существу противоположны тому, что вы думали, что они были.
На Английском Языке:
ContentType
: при отправке данных на сервер, использовать этот тип контента. По умолчанию этоapplication/x-www-form-urlencoded; charset=UTF-8
, что достаточно для большинства случаев.Accepts
: тип контента, отправленный в заголовке запроса, который сообщает серверу, какой ответ он примет в ответ. Зависит отDataType
.DataType
: тип данных, которые вы ожидаете от сервера. Если ничего не указано, jQuery будет пытаться вывести его на основе типа MIME ответа. Может бытьtext, xml, html, script, json, jsonp
.