它看起来像过去人们在接受标题时遇到问题,但我不确定我的问题是否相关。使用jQuery 1.4.2,我无法通过getJSON()
获得JSON。我可以在Firebug中看到请求/响应,看起来问题的根源在于,有问题的资源根据Accept头返回不同的结果。即使文档说它应该设置,在Firebug它显示为“/” - 显然,我想要“application/json”。这是一个已知的错误?我应该设置一些我不知道的标志吗?JQuery的getJSON()没有正确设置Accept头?
ETA:请求是跨站点的,如果有问题,但我传递callback=?
查询参数,以便JQuery(成功)将其视为JSONP。我在这个特定情况下调用的服务支持接受覆盖查询参数(&accept=application/json
),所以我得到它手动工作,但我仍然认为标题搞砸是奇怪的,希望我能够解决它,所以在处理可能不那么宽容的不同服务时,我不会再遇到这种情况。我没有一个简单的方法来复制/代码从我的开发环境,粘贴但这里的要点是:
$.getJSON(baseURL + "?item=" + itemNum + "&callback=?", function(data){
console.log(data);
}
正如你所看到的,这是不完全复杂,应该(我99 %肯定...)导致一个XHR与一个Accept头部application/json
一起发送。就像我说的那样,根据Firebug的Net控制台,这并没有发生。如果它很重要,这是在Firefox 3.6.8。
ETA Again:对于任何人仍然阅读这个,是的,它仍然在发生,不,我不知道为什么。就像我说的那样,简单的getJSON()调用,真正基本的语法,跨站点,被视为JSONP,因为它包含回调查询参数。仍然接受建议!
向我们显示您的代码,我们可能会帮助您更多。 – Steven 2010-09-23 18:22:24
我在Chrome 8中遇到了完全相同的问题。$ .getJSON(“url”,function(data){})设置Accept标头为*/* – 2010-10-16 04:28:46