2

http://www.livestream.com/userguide/?title=Mobile_API#Requesting_a_mobile_streamにあるlivestream の非常に役立つモバイル API を使用して、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 が表示されます。これは、データを解析する必要があることを意味すると思いますか? 誰かがこれを説明するために時間を割いてくれれば幸いです。本当にありがとう。

4

1 に答える 1

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
    });
}

基本的に、この関数が行うことは、実行するクエリで Yahoo のクエリ API を呼び出すことです。応答が戻ってくると、返されたスクリプトは jQuery が提供するコールバック関数を呼び出します (これが JSONP を可能にするものです)。

使用している(パラメーターで指定された)クエリqは XML フィードに対するものであるためselect * from xml、データを取得するには を使用する必要があります。次に、結果を JSON 形式で提供するように Yahoo に指示できます (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/

于 2011-08-11T05:03:45.760 に答える