2012-02-21 26 views
2
$(document).ready(function() { 
    $.getJSON('http://192.168.99.68/test.json?callback=?', function(json) {  
     alert("abc"); 
    }); 
}); 

這是行不通的。 在linux虛擬機上有一個json文件,其中192.168.99.68。 當我在瀏覽器上運行http://192.168.99.68/test.json?callback=?時,它返回true json。ajax jquery:無法從其他域獲得json/xml

回答

2

如果在這個json文件中有一個回調函數,這意味着它是動態創建的,對嗎? 因此,如果是在PHP和你的JSON文件的所有者,您可以使用此頭:

header('Access-Control-Allow-Origin: *'); 

您可以替換*與域,將訪問這個JSON文件。 *表示所有域都被允許通過JavaScript訪問。

*或*

如果您不是所有者,或者您不希望編輯JSON文件的標題,您可以使用回調函數,該JSON文件似乎支持:

<script type="text/javascript"> 
function getJSON(json) { 
    alert("Got JSON!"); 
    // do something with json 
} 
</script> 
<script type="text/javascript" src="http://192.168.99.68/test.json?callback=getJSON" async="true"></script> 
+0

謝謝DragonWork。我想要得到json數據的真實url是192.168.99.68:8096/client/api?....這個url在瀏覽器上返回true json。但是,當我使用你的腳本,它錯誤:無效的標籤。如果我使用json test.json文件從web複製了json文本),它不會返回任何內容,也不會返回警報。 – user1222893 2012-02-21 09:35:47

+0

「http://192.168.99.68/test.json?callback=getJSON」的內容應該看起來像'getJSON({i:「am」,a:「json object」})',但它似乎否認了自定義回調。所以,你只能嘗試上面的標題方法,如果你不是所有者,你什麼都做不了。這是一個基於瀏覽器的保護。 – DragonWork 2012-02-21 10:03:18