2010-07-14 89 views
4

我正在用以下方式玩$ .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/

回答

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是如何工作的跨域,通过成为<script>标签。由于您只需要JSON并从本地源处理它,请删除callback=?部分。

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

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

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

+0

的文件是在同一个域中。 – Hoque 2010-07-14 12:05:39

+0

@Hoque - 对......这就是我的观点,它不是* JSONP,它是'callback =?'指示的内容,所以就把它关掉,你就全部设置:) – 2010-07-14 12:06:53

+0

即使删除“callback = ?“,我没有得到警报。 – Hoque 2010-07-14 12:11:50