views:

911

answers:

2

Hello,

I have an existing jQuery plugin which makes a lot of AJAX calls (mostly JSON). I am wondering what is the quickest to allow it to do cross-site calls i.e. the $.get and $.post URL's will not be from the same domain.

I have heard of JSONP, but was wondering if someone could give me an concrete example to go about the whole process. I want to make minimal changes if possible to my script. Should I use a proxy.php of sorts?

Thank you for your time.

+1  A: 

If you have control over the remote domain or the remote domain has a permissive crossdomain.xml you can drop in a library like flXHR in conjunction with its jQuery plugin.

Duncan Beevers
+6  A: 

JSONP will allow you to do cross-site calls. See jQuery docs on that matter.

The concept is simple, instead of doing a normal ajax call, jQuery will append a <script> tag to your <head>. In order for this to work, your JSON data needs to be wrapped in a function call.

Your server needs to send information in such way (php example):

$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $data . ');';

Then, you can use jQuery to fetch that information:

$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'http://myotherserver.com/getdata',
  success: function () {
    // do stuff
  },
});

More information is available here:

What is JSONP?

Andrew Moore