Невозможно загрузить данные JSONP из внешнего источника с помощью jQuery - PullRequest
1 голос
/ 08 декабря 2011

Мне нужно проверить, работает ли поток на justin.tv. Обеспечить простой API JSON, где, если я запрашиваю

http://api.justin.tv/api/stream/list.json?channel=channel_name

будет возвращать конкретную информацию JSON, если поток живой.

var url = "http://api.justin.tv/api/stream/list.json";

$.ajax({
  url: url,
  dataType: 'jsonp',
  data: { channel: "scvrush1" },
  success: function(data) { alert(data); }
});

Похоже, что запрос выполнен успешно, потому что когда я смотрю на вкладку Network в инструментах разработчика Chrome, я вижу ответ

jsonp request

но обратный вызов не выполняется.

Я использую jQuery 1.4.2, упакованный с Rails 3.1.1, но, думаю, это неважно.

Ответы [ 2 ]

2 голосов
/ 08 декабря 2011

Вы должны указать функцию обратного вызова для использования JSONP. Конкретный параметр, который запрашивает justin.tv, это "jsonp"

См .: http://apiwiki.justin.tv/mediawiki/index.php/REST_API_Documentation

Это немного запутанно, потому что они не используют стандартный callback =? что JQuery любит. Поэтому вы должны вручную установить переменную обратного вызова.

См .: http://api.jquery.com/jQuery.getJSON/#comment-75080188

Это должно работать:

var url = "http://api.justin.tv/api/stream/list.json";

$.ajax({
  url: url,
  dataType: 'jsonp',
  data: { channel: "scvrush1" },
  success: function(data) { alert(data); },
  jsonp: "jsonp"
});
0 голосов
/ 08 декабря 2011

Как упомянуто в документах justin.tv API REST , URL должен указывать обратный вызов как ?jsonp=? (где второй знак вопроса обозначает имя обратного вызова, которое jQuery генерирует автоматически). В jQuery установите параметр jsonp:

var url = "http://api.justin.tv/api/stream/list.json";

$.ajax({
  url: url,
  dataType: 'jsonp',
  data: { channel: "scvrush1" },
  success: function(data) { alert(data); },
  jsonp: 'jsonp'
});

Вот демоверсия .

...