contentType指定作为请求的一部分发送到服务器的数据的格式(也可以作为响应的一部分发送,稍后再详细介绍)。
DataType指定客户端(浏览器)要接收的数据的预期格式。
两者都是不可互换的。contentType发送到服务器的标头,指定发送给服务器的数据格式(即消息正文的内容)。这与POST和PUT请求一起使用。通常,当您发送POST请求时,消息正文包含传入的参数,如:
==============================
抽样请求:POST /search HTTP/1.1 Content-Type: application/x-www-form-urlencoded
<>name=sam&age=35
==============================
“name=Sam&age=35”上面的最后一行是消息正文,contentType将其指定为application/x-www-form-urlencode,因为我们要在消息正文中传递表单参数。然而,我们并不局限于仅仅发送参数,我们可以发送json、xml、.像这样(发送不同类型的数据对于RESTful Web服务特别有用):
==============================
抽样请求:POST /orders HTTP/1.1Content-Type: application/xml<>
$199.02
December 22, 2008 06:56...
==============================
所以这次的contentType是:application/xml,因为这就是我们要发送的内容。上面的示例显示了示例请求,类似地,来自服务器的响应发送也可以让ContentType头指定服务器正在发送的内容,如下所示:
==============================
抽样答复:HTTP/1.1 201 CreatedContent-Type: application/xml<>
$199.02
December 22, 2008 06:56...
==============================dataType指定预期的响应格式。它与接受标题相关。jQuery将尝试根据响应的内容类型推断它。
==============================
抽样请求:GET /someFolder/index.html HTTP/1.1Host: mysite.orgAccept: application/xml<>
==============================
上面的请求期待着来自服务器的XML。
关于你的问题,contentType: "application/json; charset=utf-8",dataType: "json",
在这里,您使用UTF 8字符集发送json数据,您希望从服务器返回json数据。根据数据类型的JQuery文档,json类型将获取的数据文件解析为JavaScript对象,并将构造的对象作为结果数据返回。
因此,在成功处理程序中得到的是正确的javascript对象(JQuery为您转换json对象)
鉴于contentType: "application/json",dataType: "text",
在这里,您将发送json数据,因为您还没有按照JQuery文档提到编码,如果没有指定字符集,数据将使用服务器的默认字符集传输到服务器;您必须在服务器端对此进行适当的解码。
由于dataType被指定为文本,所以在成功处理程序中获得的是纯文本,如dataType的文档所示,文本和XML类型返回没有处理的数据。数据只是简单地传递给成功处理程序。