2012-06-26 121 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

相關問題