Search code examples
javascriptjqueryajaxcross-site

Cross-site AJAX using jQuery


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.


Solution

  • 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'] . '(' . $json . ');';
    

    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?