嗨,我正在尝试通过使用此代码从远程主机读取JSON。
<!DOCTYPE html>
<html>
<head>
<script src="jquery.js"></script>
<script>
$(document).ready(function(){
$("button").click(function(){
$.getJSON("http://xx.xxx.xxx.xx/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。
有人可以在这方面提供帮助。谢谢
我是锣,假设该页面不是从主持JSON的网站上提供的。
您正在尝试提出跨域请求,大多数(?)浏览器允许。您正在遇到所谓的浏览器的相同原始政策。这是浏览器内置的安全措施。它将不允许您向与请求页面不同的位置提出XHR请求。
有几种方法:
- 使用服务器端代理使请求
- 使用JSONP提出请求(请参阅GBD的答案)
- 看cors
您有跨域问题,因此您需要使用JSONP,因此请按以下
更改jQuery方法如果URL包含字符串" callback =?"(或类似,定义 服务器端API),请求将其视为JSONP。
$.getJSON("http://xx.xxx.xxx.xx/rest/user.json?jsoncallback=?",function(result){
$.each(result, function(i, field){
$("div").append(field + " ");
});
});
jQuery手册:http://api.jquery.com/jquery.getjson/
跨域查询aro不允许。请参阅Ajax jQuery:无法从其他域中获得JSON/XML,以解决可能的解决方法。另一种方法是在同一域上使用代理将本地查询代理远程主机。