您好我正在尝试使用这段代码从远程主机读取json。
<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.getJSON("http://50.116.19.49/rest/user.json",function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
});
});
</script>
</head>
<body>
<button>Get JSON data</button>
<div></div>
</body>
</html>
问题是当我在浏览器中键入url时,我从中获取json。但是使用上面的jquery方法无法获得json。
有人可以帮助这方面。感谢
答案 0 :(得分:6)
我认为这个页面不是从托管JSON的网站提供的。
您正在尝试制作跨域请求,大多数(?)浏览器都允许这样做。您正在遇到所谓的浏览器的同源策略。它是内置于浏览器中的安全措施。它不允许您向与请求页面不在同一位置的位置发出XHR请求。
有几种解决方法:
答案 1 :(得分:4)
您有跨域问题,因此您需要使用JSONP,因此请更改您的jquery方法,如下所示
如果网址包含字符串“callback =?” (或类似的,由...定义) 服务器端API),请求被视为JSONP。
$.getJSON("http://50.116.19.49/rest/user.json?jsoncallback=?",function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
答案 2 :(得分:0)
不允许跨域查询aro。有关可能的解决方法,请参阅ajax jquery: can't get json/xml from other domain。其他方法是在同一域上使用代理将本地查询代理到远程主机。