JQuery的getJSON()没有正确设置Accept标头?

前端之家收集整理的这篇文章主要介绍了JQuery的getJSON()没有正确设置Accept标头?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
过去似乎人们已经遇到了接受标题的问题,但我不知道我的问题是否相关.使用jQuery 1.4.2,我无法使用get JSON()获取 JSON.我可以在Firebug中看到请求/响应,并且看起来问题的根源在于相关资源根据Accept标题返回不同的结果.即使文档说它应该被设置,在Firebug它显示为“/” – 显然,我想要“application / json”.这是一个已知的错误吗?我应该设置一些我不知道的旗帜?

ETA:请求是跨站点,如果重要,但我传递回调=?查询参数,所以JQuery是(成功!)将其视为JSONP.我在这个特定情况下打电话给我的服务支持接受覆盖查询参数(& accept = application / json),所以我得到它手动工作,但我仍然认为头文件修复是奇怪的,希望我会可以修复它,所以我不要再遇到这样一个不同的服务,可能不是那么宽容.我没有一个简单的方法从我的开发环境复制/粘贴代码,但这里是要点:

$.getJSON(baseURL + "?item=" + itemNum + "&callback=?",function(data){
  console.log(data);
}

正如你所看到的,这并不完全复杂,应该(我99%确定…)导致XHR与应用程序/ json的Accept标头一起发送.就像我说的那样,没有发生,每个Firebug的网络控制台.如果重要,这是在Firefox 3.6.8.

ETA再次:对于任何人仍然阅读,是的,它仍在发生,不,我不知道为什么.就像我所说的,简单的getJSON()调用,真正的基本语法,跨站点,被视为JSONP,因为它包含一个回调查询参数.还是开放的建议!

解决方法

这不是一个bug.

由于您的通话是跨域,您的浏览器将不允许您进行XHR呼叫(同源策略).在内部,jQuery正在使用“< script>标签hack”来进行跨域调用(这是JSONP数据类型背后的基础思想).由于使用该标签进行调用,所以jQuery完全不可能修改头部的接受部分.

jQuery通过隐藏这些细节来工作,但不幸的是,在这种情况下,您似乎需要遵守Law of Leaky Abstractions.

原文链接:https://www.f2er.com/jquery/176641.html

猜你在找的jQuery相关文章