当前位置:  开发笔记 > 编程语言 > 正文

$ .ajax - dataType

如何解决《$.ajax-dataType》经验,为你挑选了3个好方法。



1> Nick Craver..:

contentType 是发送到服务器的标头,指定特定格式.

示例:我正在发送json或XML

dataType 你告诉jQuery期待什么样的回应?

期待JSON,XML或HTML等...... 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);
}


Musa是对的,contentType表示我们发送到服务器的格式(即帖子正文),而不是请求回来的格式.

2> 小智..:

(ps:Nick Craver给出的答案不正确)

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-urlencoded,因为我们在消息体中传递了表单参数.但是我们不仅限于发送参数,我们可以发送json,xml,...这样(发送不同类型的数据对RESTful Web服务特别有用):

==============================

样品申请:

POST /orders HTTP/1.1
Content-Type: application/xml
<>


   $199.02
   December 22, 2008 06:56
...

==============================

所以ContentType这次是:application/xml,导致我们发送的内容.上面的示例显示了示例请求,类似地,从服务器发送的响应也可以具有Content-Type标头,指定服务器正在发送的内容,如下所示:

==============================

样品回复:

HTTP/1.1 201 Created
Content-Type: application/xml
<>


   
   $199.02
   December 22, 2008 06:56
...

==============================

dataType指定对expect的响应格式.它与Accept标头有关.JQuery将尝试根据响应的Content-Type推断它.

==============================

样品申请:

GET /someFolder/index.html HTTP/1.1
Host: mysite.org
Accept: application/xml
<>

==============================

上面的请求是期望来自服务器的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文档,

如果未指定charset,则使用服务器的默认字符集将数据传输到服务器; 你必须在服务器端适当地解码它.

并且由于dataType被指定为文本,因此您在成功处理程序中获得的是纯文本,根据dataType的文档,

text和xml类型返回数据而不进行处理.数据只是传递给成功处理程序



3> SilentGhost..:

根据文档:

"json":将响应评估为JSON并返回JavaScript对象.在jQuery 1.4中,JSON数据以严格的方式解析; 任何格式错误的JSON都会被拒绝,并抛出一个解析错误.(有关正确的JSON格式的更多信息,请参阅json.org.)

"text":纯文本字符串.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有