代码之家  ›  专栏  ›  技术社区  ›  Nazmul

.getjson获取jsonp数据

  •  4
  • Nazmul  · 技术社区  · 15 年前

    我和$.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 回复  |  直到 12 年前
        1
  •  6
  •   Nick Craver    15 年前

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

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

    如果你看看 the $.getJSON() docs 这里有:

    如果URL包含字符串 "callback=?" 在URL中,请求被视为JSONP。参见 jsonp 数据类型 $.ajax() 了解更多详细信息。

    对于jsonp,它是在期待 randomFunctioName({ticket:'IBM',price:14.57}); 在回应中,不是 只是 JSON,但是函数调用…这是JSONP跨域工作的方式,通过 <script> 标签。因为您只需要JSON并从 地方的 源,删除 callback=? 一块。

    编辑: 我完全错过了第二个问题,您当前的JSON无效,将无法通过1.4中添加的jquery检查。需要这样:

    { "ticket": "IBM", "price": 14.57 }
    

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