Can you give a very simple example of reading a jsonp request with jquery? I just can't get it to work.
1 Answer
Here is working example:
<html><head><title>Twitter 2.0</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> </head><body> <div id='tweet-list'></div> <script type="text/javascript"> $(document).ready(function() { var url = "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json"; $.getJSON(url + "?callback=?", null, function(tweets) { for(i in tweets) { tweet = tweets[i]; $("#tweet-list").append(tweet.text + "<hr />"); } }); }); </script> </body></html> Notice the ?callback=? at the end of the requested URL. That indicates to the getJSON function that we want to use JSONP. Remove it and a vanilla JSON request will be used. Which will fail due to the same origin policy.
You can find more information and examples on the JQuery site: http://api.jquery.com/jQuery.getJSON/
9 Comments
akula1001
I was trying out $.ajax with those jsonp parameters and could not get that to work. Anyway, this works nicely, thanks.
hippietrail
Does the
?callback=? actually get sent as part of the URL or is it just a kind of flag that jQuery sees and the strips off before fetching the URL?ONDEV
What is necessary if your URL requires parameters? (ex:
?p=1&s=50)Ecropolis
I found this to be a good reference as a starting point. To answer above: Yes, the callback does get sent as a parameter and should be sent back as a function wrapped around the JSON response. See stackoverflow.com/questions/7936610/…. To send additional parameters they are sent in the second parameter of the getJSON(), in the above ex. replace null with {p:1,s:50}
Konrad Viltersten
I get error code 410 - gone. Is there an "eternally" present service returning JSON anywhere? Just so one can test that the own method works?
|