JQuery ajax 函数中 contentType 和 dataType 之间的差异

我有以下的 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 请求,并且发送的数据是以下字符串:

“倒钩”

我有一些困难去理解什么是 ContentTypeDataType之间的区别

我认为 ContentType指定了在 HTTP 响应中可以接收的数据类型,对吗?

那 dataType 呢? 怎么说? 我在 HTTP 请求中发送的数据类型?

在这种情况下是“文本”,因为我发送的文本字符串重现 XML 代码?

137627 次浏览

来自 文件:

ContentType (缺省值: ‘ application/x-www-form-urlencode; charset = UTF-8’)

类型: 字符串

向服务器发送数据时,请使用此内容类型。默认值是“ application/x-www-form-urlencode; charset = UTF-8”,这在大多数情况下是可行的。如果将 content-type 显式传递给 $。Ajax () ,那么它将始终被发送到服务器(即使没有发送数据)。如果没有指定字符集,数据将使用服务器的默认字符集传输到服务器; 您必须在服务器端对其进行相应的解码。

以及:

DataType (默认情况下: 智能猜测(xml、 json、 script 或 html)

类型: 字符串

您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它(XML MIME 类型将生成 XML,在1.4 JSON 中将生成 JavaScript 对象,在1.4 script 中将执行脚本,其他任何东西将作为字符串返回)。

它们本质上和你想象的完全相反。

enter image description here

英语:

  • 向服务器发送数据时,使用这个内容类型。默认为 application/x-www-form-urlencoded; charset=UTF-8,这在大多数情况下是可行的。
  • Accepts: 在请求头中发送的内容类型,它告诉服务器它将接受什么类型的响应作为回报。取决于 DataType
  • DataType: 您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它。可以是 text, xml, html, script, json, jsonp