Может ли кто-нибудь помочь мне с использованием api livestream для создания междоменного XML-запроса? - PullRequest
2 голосов
/ 11 августа 2011

Я пытаюсь использовать чрезвычайно полезный мобильный API в прямом эфире, который можно найти по адресу http://www.livestream.com/userguide/?title=Mobile_API#Requesting_a_mobile_stream, чтобы сделать XML-запрос.Все, что меня интересует, это значение ответа isLive.Я пытаюсь использовать ajax-запрос, подобный этому

$.ajax({
   type: "GET",
   url: "http://xproshowcasex.channel-api.livestream-api.com/2.0/getstream",
   datatype: "xml",
   success: function(xml){
   //this is where I need help.  This is what I would like to happen
   if (isLive == true) {
   //perform action
   }

   else {
   //perform other action
   }

Я использую плагин, найденный в http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/, для выполнения междоменных запросов xml.Может кто-нибудь сказать мне, если это самый эффективный способ сделать это?Я не смог заставить его работать.Когда я запускаю console.log (xml) (что, вероятно, не правильно), консоль JS показывает objectObject, что, я думаю, означает, что мне нужно проанализировать данные?Я был бы рад, если бы кто-то нашел время, чтобы объяснить это.Большое спасибо.

1 Ответ

2 голосов
/ 11 августа 2011

Вы близки, пост, на который вы ссылались, в основном описывает очистку страницы с использованием междоменного запроса, который проходит через YQL (Вы можете посмотреть на источник, чтобы точно узнать, что происходит).Вы можете отключить плагин и выполнить то же самое с помощью обычного запроса JSONP с помощью jQuery:

function getCrossDomainJson(url, callback) {
    $.ajax({
        url: "http://query.yahooapis.com/v1/public/yql?callback=?",
        data: {
            q: 'select * from xml where url="' + url + '"',
            format: "json"
        },
        dataType: "jsonp",
        success: callback
    });
}

По сути, эта функция вызывает вызов API-интерфейса запроса Yahoo с запросом на выполнение.Когда ответ возвращается, возвращаемый скрипт вызывает функцию обратного вызова, которую предоставляет jQuery (это то, что делает возможным JSONP).

Используемый вами запрос (указанный в параметре q) относится к каналу XML, поэтому вам нужно использовать select * from xml для извлечения данных.Затем вы можете попросить Yahoo предоставить вам результат в формате JSON (я бы рекомендовал использовать его вместо XML; XML был пространством имен).

Теперь, когда вы вызываете эту функцию:

getCrossDomainJson("http://xproshowcasex.channel-api.livestream-api.com/2.0/getstream", function(data) {
    // data is in JSON format:
    // make sure you can access the isLive property
    if (data && data.query && data.query.results && data.query.results.channel) {
        alert(data.query.results.channel.isLive);
    }
});

Функция обратного вызова получает данные JSON, полученные через YQL, и находит свойство isLive.

Пример: http://jsfiddle.net/andrewwhitaker/YAGvd/

...