2012-02-21 51 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