Из-за междоменных политик безопасности.
$(function(){
$.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?screen_name=twitterusername&callback=?', function(data) {
alert('got the result '+data);
});
});
http://www.jsfiddle.net/yewVa/
Обратите внимание на добавление callback=?
к URL. Обратите внимание, что сервер должен поддерживать ответы JSONP, чтобы это работало.
См. http://api.jquery.com/jQuery.getJson/ для более подробной информации по обоим из них.
JSONP требует веб-сайт, с которого вы извлекаете данные, чтобы понимать JSONP, а не веб-сайт, на котором он работает. JSONP работает путем введения тегов <script>
в ваш документ, с src
, установленным в качестве удаленного документа.
JSONP полагается на удаленный документ, упаковывающий его ответ в имя функции, указанной в обратном вызове (jQuery маскирует это от вас, поэтому вы видите только «?» В качестве параметра обратного вызова. После того, как jQuery закончил возиться, URL заканчивается как http://somewhere.com/?someparam=4&callback=foo
. Ответ удаленного сервера формулируется как foo({ someparam:4} )
, который анализируется как JavaScript, поскольку он был загружен в тег <script>
.
Обратите внимание, что благодаря такому подходу вероятность обработки ошибок мала.