Jquery Get json from remote host

2020-02-12 09:02发布

问题:

Hi i am trying to read json from a remote host by using this piece of code.

<!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>

The problem is when i type the url in browser i get json from it. But failed to get json by using the above jquery method.

Can someone help in this regard. Thanks

回答1:

You have cross-domain issue, so you need to use JSONP so change your jquery method as below

If the URL includes the string "callback=?" (or similar, as defined by the server-side API), the request is treated as JSONP instead.

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

jQuery Manual: http://api.jquery.com/jQuery.getJSON/



回答2:

I am gong to assume this page is not being served from the site that hosts the JSON.

You are attempting to make a cross-domain request, which most(?) browsers to do allow. You are encountering what is called the same-origin policy of the browser. It is a security measure built into the browser. It will not allow you to make an XHR request to a location that is not on the same origin as the requesting page.

There are a few ways around this:

  1. Use a server-side proxy to make the request
  2. use JSONP to make the request (See GBD's answer)
  3. Look into CORS


回答3:

Cross domain queries aro not allowed. See ajax jquery: can't get json/xml from other domain for possible workaround. Other way is use proxy on same domain to proxy local queries to remote hosts.