我试图在jQuery中使用getJSON函数导入一些数据并触发回调函数。回调函数未运行。但是,如果我使用get函数尝试相同的操作,则效果很好。奇怪的是,即使我将“ json”作为类型传递,它也可以与get函数一起使用。为什么会这样呢?我在Firefox 3和IE 7中测试了以下文件:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8'> <title>ajax test</title> <script type="text/javascript" src="/jquery-1.3.2.min.js"></script> </head> <body> <input type="button" id="test1" value="get"> <input type="button" id="test2" value="getJSON"> <input type="button" id="test3" value="get with json type"> <script type="text/javascript"> $("#test1").click(function() { $.get("index.html", function(response) { alert('hi'); //works } ) }); $("#test2").click(function() { $.getJSON("index.html", function(response) { alert('hi'); //doesn't work } ) }); $("#test3").click(function() { $.get("index.html", function(response) { alert('hi'); //works }, "json" ) }); </script> </body></html>
只要我访问的URL在同一个域中,这似乎都会发生。我尝试传递一些数据,但这没有什么不同。
当然,可以像在第3个测试函数中那样使用get函数来解决该问题,但是我仍然对为什么会发生这种情况感到好奇。
我知道这里有一个类似的问题,但没有回答我的问题。
json必须有效,否则回调将不会触发。