我正在尝试为我在本地进行的测试提供一些外部JSON电话列表。
JSON = https://www.o2.co.uk/shop/homepage/scripts/phoneList.json
我已经读过一个单独的帖子,要克服允许原点/跨域问题,你可以通过'callback =?'到网址的末尾。这似乎工作正常,因为现在在devtools网络选项卡中我可以看到文件被拉得很好。
但是,我从来没有让它进入成功的回调函数。它总是带回 parsererror 。
根据jsonlint.com
,代码100%有效以下代码的片段:
$.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);
}
});
任何想法都欢迎,因为我很好并且真的被卡住了。
感谢。
答案 0 :(得分:0)
JSONP仅在服务器支持时才有效。服务器需要做的是获取你的回调参数并将json数据包装在具有该名称的函数调用中。
所以当https://www.o2.co.uk/shop/homepage/scripts/phoneList.json
以
[{
"handset":"Alcatel 10.30 Black",
"link":"/shop/phones/alcatel/10.30-black/"
}]
https://www.o2.co.uk/shop/homepage/scripts/phoneList.json?callback=MyCallback
应该回复:
MyCallback([{
"handset":"Alcatel 10.30 Black",
"link":"/shop/phones/alcatel/10.30-black/"
}]);
如果服务器不这样做,JSONP无法工作。也许O2不希望你使用他们的数据。