I am making a html page intended to be run locally on a PC, preferably without a local server runing (file://). I am also using jQuery to make manipulation/AJAX a little easier.
I am trying to load 2 results from the twitter API, but I get an error. The code is as follows:
$.getJSON("http://api.twitter.com/1/statuses/user_timeline.json?screen_name=someuser&count=9", {},
function (data) {
$.each(data.items, doSomething1);
});
$.getJSON("http://search.twitter.com/search.json?q=somequery&result_type=recent&count=9", {},
function (data) {
$.each(data.items, doSomething2);
});
I also tried the following code, but it didn't change the outcome.
$.getJSON("http://api.twitter.com/1/statuses/user_timeline.json",
{
count: "9",
screen_name: "someuser"
},
function(data) {
$.each(data.items, updateAWTweets);
});
$.getJSON("http://search.twitter.com/search.json",
{
q: "somequery",
result_ty开发者_如何学Cpe: "recent",
count: "9"
},
function(data) {
$.each(data.items, updateHashTagTweets);
});
I get the following error in chrome (on a localhost server):
XMLHttpRequest cannot load http://search.twitter.com/search.json?q=somequery&result_type=recent&count=9. Origin http://localhost:62153 is not allowed by Access-Control-Allow-Origin.
or (with a file:// link)
XMLHttpRequest cannot load http://api.twitter.com/1/statuses/user_timeline.json?screen_name=someuser&count=9. Origin null is not allowed by Access-Control-Allow-Origin.
Does anyone know how I can fix this?
You're running into the same-origin policy restriction - your script can't access any other domain apart from the one it was loaded from.
You could give JSONP a try - that's one common solution to getting data across domains:
- http://www.chazzuka.com/blog/?p=221
- http://jquery-howto.blogspot.com/2009/04/twitter-jsonjsonp-api-url.html
Your code would look something like this (note the addition of
callback=?
to the URL):$.getJSON("http://search.twitter.com/search.json?q=somequery&result_type=recent&count=9&callback=?", {}, function (data) { $.each(data.items, doSomething2); });
Another option is to setup a proxy - you can use Apache httpd as a proxy/reverse proxy to get around this restriction.
Add the JQuery's JSONP callback to the URL
$.getJSON("http://search.twitter.com/search.json?callback=?", {
Don't use this $.getJSON()
Its not flexible..
You can use
$.ajax({
url:"test.json",
dataTypr:"json",
async:false
}).responseText;
this can easily accessed by the html coding....
精彩评论