I have a javascript code on my website, there is a variable:
var remoteJsonVar;
On the other hand there is a json file on a remote website
https://graph.facebook.com/?ids=http://www.stackoverflow.com
I need to set the variable remoteJsonVar to this remote jason data.
I am sure that it is very simple, but I can’t find the solution.
A small working example would be nice.
Because you’re trying to get the data from a different origin, if you want to do this entirely client-side, you’d use JSON-P rather than just JSON because of the Same Origin Policy. Facebook supports this if you just add a
callbackparameter to your query string, e.g.:Then you define a function in your script (at global scope) which has the name you give in that
callbackparameter, like this:You trigger it by creating a
scriptelement and setting thesrcto the desired URL, e.g.:Note that the call to your function will be asynchronous.
Now, since you may want to have more than one outstanding request, and you probably don’t want to leave that callback lying around when you’re done, you may want to be a bit more sophisticated and create a random callback name, etc. Here’s a complete example:
Live copy | Live source
Note that when you use JSONP, you’re putting a lot of trust in the site at the other end. Technically, JSONP isn’t JSON at all, it’s giving the remote site the opportunity to run code on your page. If you trust the other end, great, but just remember the potential for abuse.
You haven’t mentioned using any libraries, so I haven’t used any above, but I would recommend looking at a good JavaScript library like jQuery, Prototype, YUI, Closure, or any of several others. A lot of the code above has already been written for you with a good library. For instance, here’s the above using jQuery:
Live copy | Live source