即使JSON有效,jQuery JSON parsererror也是如此

时间:2013-11-22 09:19:58

标签: json jquery jsonp

我正在尝试为我在本地进行的测试提供一些外部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);
          }
        });

任何想法都欢迎,因为我很好并且真的被卡住了。

感谢。

1 个答案:

答案 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不希望你使用他们的数据。