繁体   English   中英

带有回调失败的getJSON with Expected';'

[英]getJSON with callback failing with Expected ';'

我正在尝试使用jQuery.getJSON使用以下代码从站点获取信息。

<script>
var url = "https://www.gov.uk/api/foreign-travel-advice/usa.json";

alert(url);

$.getJSON(url + "?callback=?",null, function (json) {

alert(json);  
alert(json.details.description);
})

</script>  

这将在IE中返回错误:网页错误详细信息

用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.1; WOW64; Trident / 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729)时间戳:星期四,9 2013年5月16:51:48 UTC

Message: Expected ';'
Line: 1
Char: 18
Code: 0
URI: https://www.gov.uk/api/foreign-travel-advice/usa.json?callback=jQuery1910011146073418833335_1368117826272&_=1368117826273

如果我将usa.json下载为文件,一切正常。

从阅读其他答案,我认为问题是该网站不正确支持回调。 由于我无法控制服务器,有人能告诉我如何解决这个错误吗?

你混淆了JSON和JSONP,它们是两个截然不同的东西。

JSON是一种数据符号。 JSON表示法中的对象可能如下所示:

{"foo": "bar"}

JSONP是JSON一种传输机制,围绕工程同源策略 ,通过使用script标签和幕后的函数调用。 上面的JSONP可能如下所示:

callback({"foo": "bar"})

通过在您的URL中放置?callback ,您告诉jQuery期望JSONP,而不是JSON。

如果您正在与之交谈的API不支持JSONP,则不能将JSONP与该API一起使用。 您可以使用YQL作为代理 否则,除非该站点支持CORS (并且快速检查表明它没有),并且您可以依赖于使用支持CORS的浏览器的用户 ,您需要通过自己的服务器运行它。

我相信你在最后一行丢失了一个分号。

它应该如下所示:alert(json.details.description); });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM