jQuery.getJSON не работает для твиттера - PullRequest
0 голосов
/ 03 марта 2011

Может кто-нибудь, пожалуйста, скажите мне, почему эта функция jQuery не работает.Это не вызывает alert.

$.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?',
  {
      screen_name: 'samajshekhar',
      count: '5',
  },
 function (data) {
      alert('hello world from twitter');
  });   

В Fiddler я вижу, что ожидаемый JSON был возвращен.

Однако при вызове API фликера с использованием примера кода в документации jQuery он дает alert как и ожидалось

$.getJSON('http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?',
  {
    tags: 'cat',
    tagmode: 'any',
    format: 'json'
  },
  function(data) {
   alert('hello world from flicker');   
  });

Вот пример кода на JS Bin

Я пробовал даже с API-интерфейсом графического фейсбука до сих пор нет alert

В примере кода я попытался вызвать getJSON на facebook, twitter, flicker, и только alert вызывается только вызов flicker.

Ответы [ 3 ]

9 голосов
/ 03 марта 2011

Вам необходимо добавить параметр обратного вызова в URL, чтобы он стал вызовом jsonp.

http://api.twitter.com/1/statuses/user_timeline.json?callback=?
3 голосов
/ 03 марта 2011

Разница между этими двумя примерами состоит в том, что вызов API Flickr возвращает результат JSONP, а вызов API Twitter возвращает результат JSON.Вызов Twitter, потому что ответом является JSON, нарушает Same Origin Policy , которая запрещает запуск сценариев, происходящих из другого домена;Ответы JSONP, с другой стороны, не регулируются этим правилом.

Как указали другие пользователи, добавьте '? Callback =?'на URL-адрес запроса и ответ API Twitter будет иметь вид JSONP.

2 голосов
/ 03 марта 2011

У вас нет параметра JSONP в URL

$.getJSON('http://api.twitter.com/1/statuses/user_timeline.json?jsoncallback=?',
...