2011-08-11 45 views
2

我正在嘗試使用livestream的非常有用的移動API,在http://www.livestream.com/userguide/?title=Mobile_API#Requesting_a_mobile_stream發現一個XML請求。我感興趣的是isLive響應值。我試圖用這樣有人可以幫助我使用livestream的api做出跨域xml請求嗎?

$.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 
    } 

一個Ajax請求我使用在http://james.padolsey.com/javascript/cross-domain-requests-with-jquery/發現插件進行跨域XML請求。任何人都可以告訴我這是否是最有效的方法?我一直沒有能夠得到它的工作。當我運行console.log(xml)(可能不正確)時,JS控制檯顯示objectObject,我認爲這意味着我需要解析數據?如果有人能花時間解釋這一點,我會很喜歡它。非常感謝。

回答

2

您近了,您鏈接到的帖子基本上描述了使用跨越YQL的跨域請求(您可以查看源代碼以查看究竟發生了什麼)的頁面抓取。你可以切出的插件,完成同樣的事情用jQuery常規JSONP請求:

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與查詢運行。當響應返回時,腳本返回調用jQuery提供的回調函數(這是使JSONP成爲可能的原因)。

query you're using(在q參數中指定)違反XML提要,因此您需要使用select * from xml來檢索數據。然後你可以告訴雅虎以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); 
    } 
}); 

回調函數接收通過YQL檢索的JSON數據並發現isLive財產。

例子:http://jsfiddle.net/andrewwhitaker/YAGvd/

+0

真棒非常感謝您的幫助。 – davis

相關問題