Basic how-to for cross domain jsonp

user581733 picture user581733 · Mar 28, 2011 · Viewed 48k times · Source

I looked everywhere here for this. I need just a simple "how-to" pull jsonp cross domain. I'm using jQuery 1.5.1.

I tried the following in a program on another site:

$.getJSON("http://www.mydomain.com/testjson.json?jsoncallback=?", function(data) {
    alert("I'm hitting this.");
}

This doesn't work at all.

Is there a way of just doing a simple cross domain jquery JSONP call?

Thanks

Answer

Matt picture Matt · Mar 29, 2011

JSONP requires the cooperation of the server to succeed. You cannot pull random pages using JSONP and expect them to succeed; the server needs to know:

  1. It needs to formulate a JSONP response, rather than a JSON response.
  2. It needs to know the name of the function to wrap the response around.

If you're unsure on why the server needs to know these, or what the differences are between JSON and JSONP, you should read up on them; or the whole thing will make no sense. For starters, check out Can anyone explain what JSONP is, in layman terms? and http://en.wikipedia.org/wiki/JSONP.

After understanding this a little more, you'll probably find the server is returning

{ "key": 1, "bar": "foo" }

(which is valid JSON), rather than:

someCallback({ "key": 1, "bar": "foo" })

which is a JSONP response.