【发布时间】:2013-11-22 09:19:58
【问题描述】:
我正在尝试提取一些外部 JSON 电话列表以进行我在本地进行的测试。
JSON = https://www.o2.co.uk/shop/homepage/scripts/phoneList.json
我已经阅读了一个单独的线程来克服允许来源/跨域问题,您可以传递“回调=?”到网址的末尾。这似乎工作正常,因为现在在 devtools 网络选项卡中我可以看到文件被正常提取。
但是,我从来没有让它进入成功回调函数。它总是带回 parsererror。
根据 jsonlint.com,代码 100% 有效
一个sn-p的代码如下:
$.ajax({
type: 'GET',
url: 'https://www.o2.co.uk/shop/homepage/scripts/phoneList.json?callback=?',
contentType: 'application/json; charset=utf-8',
cache: true,
dataType:'json',
success: function(response) {
console.log(response);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
欢迎任何想法,因为我很好,真的卡住了。
谢谢。
【问题讨论】:
-
你试图在似乎不支持它的资源上使用
jsonp -
只传递
callback=?不会发出跨域请求,服务器端需要支持这样的响应 -
不完全确定,但从 Url 返回的 JSON 是一个数组而不是一个对象 - 这可能会扰乱解析器。
-
但我可以在 devtools 中看到文件和响应?所以文件没有被阻止或什么?
-
该服务似乎不支持 CORS,因此您无法通过 Ajax 访问它。