2012-06-26 125 views
0

为什么getJSON方法只适用于本地文件?如果我想从本地使用json,它可以工作,但是如果我使用http设置url,它不起作用。为什么?getJSON - 为什么它没有工作?

<!DOCTYPE html> 
<html> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    </head> 
    <script> 
     $.getJSON("http://www.address.com/getTables.php", function (data) { 
      $.each(data, function (i, table) { 
       $("#tables").append("<p>" + table.id + " " + table.tabname + "</p>"); 
      }); 
     }); 
    </script> 

    <body> 
     <div id="tables"></div> 
    </body> 

</html> 

返回的JSON:

[{ "id":"12", "tabname":"cukry" }, { "id":"11", "tabname":"table" }] 
+0

你能告诉我们你的'getTables.php'代码?还有,当你试图执行'$ .getJSON'时会发生什么?也许使用Chrome的开发人员工具,然后查看“网络”选项卡或控制台。 –

+0

gettables.php php是正确的,它返回Json。如果我通过http获取简单的Json文件,它也不起作用(http://www.address.com/test.json)。怎么了?我只想显示这个JSON文件 – pkrr

+0

当你试图用'$ .getJSON'提交请求时会发生什么?检查Chrome的开发者工具的控制台和网络标签。 –

回答

3

这听起来像你可能运行到same-origin policy

+0

GET http://pkr.mydevil.net/panel/actions/ getTables.php \t 200 OK \t \t 154ms \t jQuery的latest.js(wiersz 8240) NagłówkiHTML Nagłówkiodpowiedzi 连接\t保活 内容类型\t text/html的 日期\t星期二,2012年6月26日12:47:31 GMT 服务器\t nginx 传输编码\t chunked X-Powered-By-\t PHP/5.3.11 Nagłówkizapytania 接受\t application/json,text/javascript,*/*; Q = 0.01 接受编码gzip的\t,缩小 接受语言\t PL,EN-US; Q = 0.7,连接; Q = 0.3 连接\t保活 主机\t pkr.mydevil.net 产地\t空 用户代理\t Mozilla/5.0(Windows NT 6.1; rv:13.0)Gecko/20100101 Firefox/13.0.1 FirePHP/0.7.1 x-insight \t激活 – pkrr

+0

我请你原谅? –

0

像马特说的那样是因为same origin policy。尝试使用JSONP。你只需要回调添加到您请求的URL是这样的:

$.getJSON("http://www.address.com/getTables.php?jsoncallback=?", function (data) { 
     $.each(data, function (i, table) { 
      $("#tables").append("<p>" + table.id + " " + table.tabname + "</p>"); 
     }); 
    }); 

查看更多有关JSONP here

相关问题