Answers:
contentType
是发送到服务器的HTTP 标头,用于指定特定格式。dataType
您是在告诉jQuery 期望什么样的响应。该$.ajax()
文档也对这些内容进行了完整描述。
在您的特定情况下,第一个请求的响应位于UTF-8
,第二个则不在乎。同样,第一个将响应视为JavaScript对象,第二个将其视为字符串。
所以第一个是:
success: function(data) {
// get data, e.g. data.title;
}
第二:
success: function(data) {
alert("Here's lots of data, just a string: " + data);
}
dataType = ""
?
(ps:Nick Craver给出的答案不正确)
contentType指定作为请求的一部分发送到服务器的数据格式(也可以作为响应的一部分发送,稍后再介绍)。
dataType指定客户端(浏览器)要接收的数据的预期格式。
两者不可互换。
contentType
是发送到服务器的标头,指定要发送到服务器的数据格式(即消息正文的内容)。与POST和PUT请求一起使用。通常,当您发送POST请求时,消息主体包含传入的参数,例如:=============================
样品要求:
POST /search HTTP/1.1
Content-Type: application/x-www-form-urlencoded
<<other header>>
name=sam&age=35
=============================
“ name = sam&age = 35”上方的最后一行是消息正文,由于我们在消息正文中传递了表单参数,因此contentType将其指定为application / x-www-form-urlencoded。但是,我们不仅限于发送参数,我们还可以发送json,xml等。(发送不同类型的数据对于RESTful Web服务特别有用):
=============================
样品要求:
POST /orders HTTP/1.1
Content-Type: application/xml
<<other header>>
<order>
<total>$199.02</total>
<date>December 22, 2008 06:56</date>
...
</order>
=============================
所以这次的ContentType是:application / xml,这就是我们要发送的内容。上面的示例显示了示例请求,类似地,从服务器发送的响应也可以具有Content-Type标头,以指定服务器发送的内容,如下所示:
=============================
样本回复:
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
指定期望的响应格式。它与Accept标头有关。jQuery将尝试根据响应的Content-Type进行推断。=============================
样品要求:
GET /someFolder/index.html HTTP/1.1
Host: mysite.org
Accept: application/xml
<<other headers>>
=============================
以上要求是期望服务器提供XML。
关于你的问题
contentType: "application/json; charset=utf-8",
dataType: "json",
在这里,您正在使用UTF8字符集发送json数据,并且希望从服务器返回json数据。根据dataType的JQuery文档,
json类型将提取的数据文件解析为JavaScript对象,并将构造的对象作为结果数据返回。
因此,您在成功处理程序中获得的是正确的javascript对象(JQuery为您转换了json对象)
而
contentType: "application/json",
dataType: "text",
在这里,您正在发送json数据,因为根据JQuery文档,您没有提到编码,
如果未指定字符集,则将使用服务器的默认字符集将数据传输到服务器。您必须在服务器端对此进行适当解码。
并且由于dataType被指定为文本,因此根据dataType的文档,成功处理程序中获得的是纯文本,
text和xml类型不处理就返回数据。数据简单地传递给成功处理程序