Jquery从远程主机获取json

您好我正试图通过使用这段代码从远程主机读取json。

     $(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 + " "); }); }); }); });     

问题是当我在浏览器中键入url时,我从中获取json。 但是使用上面的jquery方法无法获得json。

有人可以帮助这方面。 谢谢

您有跨域问题,因此您需要使用JSONP,因此请更改您的jquery方法,如下所示

如果URL包含字符串“callback =?” (或类似的,由服务器端API定义),请求被视为JSONP。

 $.getJSON("http://50.116.19.49/rest/user.json?jsoncallback=?",function(result){ $.each(result, function(i, field){ $("div").append(field + " "); }); }); 

jQuery手册: http : //api.jquery.com/jQuery.getJSON/

我认为这个页面不是从托管JSON的站点提供的。

您正在尝试发出跨域请求,大多数(?)浏览器都允许这样做。 您正在遇到所谓的浏览器的同源策略。 它是浏览器内置的安全措施。 它不允许您向与请求页面不在同一位置的位置发出XHR请求。

有几种方法可以解决这个问题:

  1. 使用服务器端代理发出请求
  2. 使用JSONP发出请求(参见GBD的回答)
  3. 看看CORS

不允许跨域查询aro。 请参阅ajax jquery:无法从其他域获取json / xml以获取可能的解决方法。 其他方式是在同一域上使用代理将本地查询代理到远程主机。