6

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://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>

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

Parapluie
  • 714
  • 1
  • 7
  • 22
h_h
  • 1,201
  • 4
  • 28
  • 47

3 Answers3

6

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
Jason Dean
  • 9,585
  • 27
  • 36
  • Hi i have checked the last link and also verified that my site is already CORS enabled. – h_h Oct 20 '12 at 16:50
  • Then look at the JS Console, what is it telling you? What browser are you using? – Jason Dean Oct 20 '12 at 16:52
  • I am using Chrome. Is there any alternate way of doing this any jquery or javascript hack. – h_h Oct 20 '12 at 16:54
  • @h_a86 u may check your console if its giving cross domain access violation you may try proxy server if you are using php you may try curl for this purpose to fetch the json from cross domain and then pass it to your jquery thanks. – Faisal Naseer Apr 13 '16 at 07:33
4

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://xx.xxx.xxx.xx/rest/user.json?jsoncallback=?",function(result){
  $.each(result, function(i, field){
    $("div").append(field + " ");
      });
    });

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

Parapluie
  • 714
  • 1
  • 7
  • 22
GBD
  • 15,847
  • 2
  • 46
  • 50
0

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.

Community
  • 1
  • 1
Anton Bessonov
  • 9,208
  • 3
  • 35
  • 38