jQuery .getJSON不能正常工作

问题描述:

我只是在学习如何利用jquery和jquery,并且我碰到了一个我不明白的砖墙。jQuery .getJSON不能正常工作

这里是我的代码 - 非常简单的代码:

$("#click").click(function() { 
    $.getJSON("http://localhost/jsontest/a.json", function(data) { 
     alert("done"); 
    }); 

    }); 

基本上,负载a.json并发送警报到屏幕说法完成。

这里是a.json的内容:

{ “完成”: “37”}

就是这样。

尽管没有显示警报,但它不起作用。

任何想法的人?

+1

http://livehttpheaders.mozdev.org是你的朋友。 – Anders 2010-07-08 13:10:06

+1

发出请求的页面的网址是什么? – 2010-07-08 13:17:00

+0

嗯,这是一个JSON“得到”,所以不应该是一个问题... – Pointy 2010-07-08 13:19:02

我打赌这样的:你忘了安装程序代码在<script>区块之后您的“单击”元素或“准备就绪”处理程序中:

$(function() { 
    $('#click').click(function() { /* ... same stuff as you have ... */ }); 
}); 

从萤火虫返回有错误吗?

我想通过改变开始:

$.getJSON("http://localhost/jsontest/a.json?callback=?", function(data) { 

到:

$.getJSON("http://localhost/jsontest/a.json", 'callback=?', function(data) { 
+0

从Firefox返回没有错误 - 我试着用... a.json?callback =? - 仍然没有工作。 它现在可以工作 - 警报(data.done)做到了。 谢谢你们:-) – icecreamsoop 2010-07-08 13:19:22

+1

所以当你说“警报没有显示”,你的意思是“警报发生,但它只包含'done'这个词? – Pointy 2010-07-08 13:25:55

试试这个:

$.getJSON("http://localhost/jsontest/a.json", { }, function(data) { 
    alert(data.done); 
}); 
+3

这不是必需的。如果jQuery发现第二个参数是一个函数,它假定这个调用看起来像原始问题中的调用。 – Pointy 2010-07-08 13:17:26

+0

+1 - 不需要'{},'部分,回调可以是第二个参数,但alert(data.done)(而不是字符串“done”)是正确的。 – 2010-07-08 13:22:51

+0

嗯,是的,但他说警报没有显示。 @尼克你是公认的大师,发现“忘了把代码放在'准备'处理程序”的问题! – Pointy 2010-07-08 13:24:32

我刚刚遇到了一个问题,那就是我没有格式化正在检索的文件中的数据。如果文件中的JSON有任何问题,它会自动失败。尽管你总是可以添加.fail(函数)来检测失败。

我用的是:{ varname:"my string" }

当我本来应该使用:{ "varname":"mystring" }

出于这个原因,我认为这可能是最好使用去检索与$获得(数据),然后使用JSON.parse()就可以了。这样你就知道get或parse是否失败。