什么是接受ATTRIB jQuery的AJAX的地步? 它实际上做什么?(What is the

2019-06-25 12:59发布

花了坚实小时试图弄清楚为什么地球上这个(CoffeeScript的)

$.ajax
  accepts: "application/json; charset=utf-8"

没有绝对没有改变接受头,而这

$.ajax
  dataType: "json"

适当地设置首标接受到application/json; charset=utf-8 application/json; charset=utf-8

完全糊涂了,我失去了的东西或者是接受ATTRIB全年愚人节的玩笑?

Answer 1:

一如往常的文档是你的朋友:

接受

默认值:取决于数据类型

在请求头,告诉什么样的反应,将在接受退货服务器发送的内容类型。 如果接受设置需要修改,建议在$ .ajaxSetup()方法,这样做一次。

数据类型

默认值:智能猜测(XML,JSON,脚本或HTML)

该类型是您期望从服务器返回的数据。 如果没有指定,jQuery将尝试基于MIME类型的响应来推断它(一个XML MIME类型将产生XML,在1.4 JSON将产生一个JavaScript对象,在1.4的脚本将执行脚本,和其他任何会返回一个字符串)。 可用的类型(以及作为第一个参数,以您的成功回调传递的结果)是:

“XML”:返回一个可以通过jQuery处理的XML文档。

“HTML”:返回HTML纯文本; 在DOM插入时包含的脚本标签进行评估。

脚本 ”:评估响应为JavaScript,并返回纯文本。 通过追加查询字符串参数禁用缓存, _=[TIMESTAMP]该URL,除非缓存选项设置为true。 注意:这将打开文章到获取远程域的请求。

“JSON”:评估响应为JSON,并返回一个JavaScript对象。 jQuery中1.4 JSON数据被解析以严格的方式; 任何畸形的JSON被拒绝,解析错误异常。 (有关正确的JSON格式的详细信息,请参阅json.org。)

“JSONP”:使用JSONP在JSON块载荷。 增加了一个额外?callback=? 您网址的结尾指定回调。 通过追加查询字符串参数禁用缓存,
_=[TIMESTAMP]除非高速缓存选项被设置为true的URL。

文本 ”:一个纯文本字符串。 多,空间分隔值:在jQuery 1.5,jQuery的可一个数据类型从它在Content-Type头收到您所需要的转换。 例如,如果你想要一个文本响应为XML进行处理,用“ 文字XML”的数据类型。 您也可以JSONP请求,把它收到的文本,并通过jQuery的解释为XML:“文字JSONP XML。” 同样,速记字符串,如“JSONP XML”将首先尝试从JSONP转换为XML,并且,做不到这一点,从JSONP转换为文本,然后从文本到XML。

现在回到你的问题。 我不熟悉cofeescript但相反dataType这是一个字符串,则accepts参数是地图,应该这样使用:

$.ajax({
    url: ...
    dataType: 'json',
    accepts: {
        xml: 'text/xml',
        text: 'text/plain'
    }
});


文章来源: What is the point of jQuery ajax accepts attrib? Does it actually do anything?