$ .getJSON获取JSONP数据

时间:2010-07-14 12:01:37

标签: jquery

我用以下方式玩$ .getJSON来接收警报,但没有运气。

这是代码,

<script type="text/javascript">
    $(document).ready(function() {
        var url = "ticker.js?callback=?";
        $.getJSON(url, function(data) {
            alert(data.price);
        });

    });
</script>

并且ticker.js文件只有以下行

{ticket:'IBM',price:14.57}

它应该得到警报“14.57”,但我没有得到警报。

如果您想看到它的实际效果,可以试试这个链接, http://nazmulweb.com/site5/demo/jsonPtest/

1 个答案:

答案 0 :(得分:6)

如果是本地文件,则应删除?callback=?部分,如下所示:

var url = "ticker.js";
$.getJSON(url, function(data) {
   alert(data.price);
});

如果你看the $.getJSON() docs,就是这样:

  

如果URL在URL中包含字符串"callback=?",则该请求将被视为JSONP。有关详细信息,请参阅$.ajax()jsonp数据类型的讨论。

使用JSONP,它在响应中期望randomFunctioName({ticket:'IBM',price:14.57});,而不是只是 JSON,而是一个函数调用...这就是JSONP跨域工作的方式,是{{1 }} 标签。由于您只需要JSON并从本地源处理它,因此请删除<script>部分。

编辑:我完全错过了第二个问题,你当前的JSON无效,并且将在1.4中添加jQuery的检查失败。它必须是这样的:

callback=?

您可以在此处测试您的JSON的有效性:http://www.jsonlint.com/