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_type: "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?
JSON files are human-readable means the user can read them easily. These files can be opened in any simple text editor like Notepad, which is easy to use. Almost every programming language supports JSON format because they have libraries and functions to read/write JSON structures.
Right click on JSON file, select open, navigate to program you want open with(notepad). Consecutive opens automatically use notepad.
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:
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With