2016-07-19 1 views
0

私はJavascriptを使用しています。 API google(このリンク:http://www.javascriptkit.com/dhtmltutors/googleajaxfeed.shtml)でRSSデータを取得し、データを配列(グローバル変数)に挿入します。しかし、私のグローバル変数はデータを保存できません。 rssfeedsetup()関数内RSSデータをグローバル変数にロード

、ARR_DATA(グローバル配列)は、データを持っています。ただし、ロード後にrssfeedsetup()関数、ARR_DATAにデータがありません。

この場合、グローバル変数にデータを挿入する方法を教えてください。

マイコード: ヘッド:

<head> 
    <title>TEST API FEED RSS</title> 

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 

    <script type="text/javascript" src="http://www.google.com/jsapi"> 
    </script> 

    <script type="text/javascript"> 
     google.load("feeds", "1"); //Load Google Ajax Feed API (version 1) 
    </script> 
</head> 

ボディ:

<body> 
    <div id="feeddiv"></div> 

    <script type="text/javascript"> 

     var ARR_DATA = []; // **I want to insert data into this array** 

     var feedurl = "http://rss.slashdot.org/Slashdot/slashdot"; 
     var feedlimit = 4; 

     function rssfeedsetup() { 
      var feedpointer = new google.feeds.Feed(feedurl); //Google Feed API method 
      feedpointer.setNumEntries(feedlimit); //Google Feed API method 
      feedpointer.load(displayfeed); //Google Feed API method 
     } 

     function displayfeed(result) { 
      if (!result.error) { 
       var thefeeds = result.feed.entries; 
       var arr_Temporary = []; 

       for (var i = 0; i < thefeeds.length; i++) { 

        arr_Temporary[0] = thefeeds[i].title; 
        arr_Temporary[1] = thefeeds[i].link; 

        // insert RSS data into ARR_DATA. 
        ARR_DATA.push(arr_Temporary); 

        console.log('value before:', ARR_DATA); // check value of ARR_DATA, there have data exist. 
       } 
      } 
     } 

     window.onload = function() { 
      rssfeedsetup(); // call function 

      console.log('value2 after:', ARR_DATA); // check value of ARR_DATA, there is no data. 
     }; 
     console.log('value2 after:', ARR_DATA); //check value of ARR_DATA, there is no data. 
    </script> 
</body> 

私が持っている価値コンソール: image of firebug on firefox

シモンズ:ARR_DATAは無負荷機能rssfeedsetup後のデータが含まれているのはなぜ( )?

答えて

1

あなたはこのような配列にデータをプッシュすることができます

function displayfeed(result) { 
      if (!result.error) { 
       var thefeeds = result.feed.entries; 

       for (var i = 0; i < thefeeds.length; i++) { 
        var feed = { 
         title: thefeeds[i].title, 
         link: thefeeds[i].link 
        }; 

        ARR_DATA.push(feed); 
       } 
       console.log(feed); 
      } 
     } 

はそれが

+0

を役に立てば幸い負荷feedrsssetup()関数の後、ARR_DATAは、まだデータがない、ありがとうございました。 – vtking

+0

フィードモジュールをロードする前に使用している可能性があります。あなたがここに書かれている場合、https://developers.google.com/feed/v1/devguideを見ると、rssモジュールを必要とした後でwindows.loadのrssfeedsetup()関数を呼び出すのではなく、このコードを使用します:google.load( "feeds"、 "1"); google.setOnLoadCallback(rssfeedsetup); –

+0

ええ、大変申し訳ありません!大変ありがとうございました!私はあなたの答えを受け入れるためにクリックして、私の解決策を見つけるのに最も役立った。 – vtking