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请求。
有几种方法可以解决这个问题:
- 使用服务器端代理发出请求
- 使用JSONP发出请求(参见GBD的回答)
- 看看CORS
不允许跨域查询aro。 请参阅ajax jquery:无法从其他域获取json / xml以获取可能的解决方法。 其他方式是在同一域上使用代理将本地查询代理到远程主机。