2011-08-03 60 views
0

我想要定期閱讀兩個Rss訂閱源網址,並在我的Android應用程序中顯示最新的訂閱源標題作爲通知。使用javascript解析Rss訂閱源的問題

由於setinterval函數每8000毫秒被調用一次,我想確保沒有相同標題的重複通知。

當我做getrss功能,我能看到XML對象內的console.log,但 我無法看到被輸出爲VAR XML,VAR進入或VAR標題任何數據。 Plese指出我可能會繼續。

/* ---------------------- global variables ---------------------- */ 

    var Rss1_title; 
    var Rss2_title; 

/* ---------------------- end global variables------------------- */ 

/* --------- pull latest Rss feed title for first url: ---------- */ 

    function update_rss1_feeds(){ 
    var new_title = getRss("http://yofreesamples.com/category/real-freebies/feed/"); 
     if(Rss1_title != new_title) 

//display the notification 

      navigator.notification.alert(
       new_title, // message 
       'New Rss Entry',     // title 
       'New Rss Entry'     // buttonName 
      ); 

     Rss1_title = new_title;    
    } 
/* --------- end : --------- */ 

/* --------- pull latest Rss feed title for second url: --------- */ 

    function update_rss2_feeds(){ 
    var new_title = getRss("http://yofreesamples.com/category/free-coupons/feed/"); 
     if(Rss2_title != new_title) 

//display the notification 

      navigator.notification.alert(
       new_title, // message 
       'New Rss Entry',     // title 
       'New Rss Entry'     // buttonName 
      ); 

     Rss2_title = new_title;    
    } 
/* --------- end : --------- */ 

這是getrss功能是我解析RSS提要。我可能會在這裏做錯事。

function getRss(url){ 
if(url == null) return false; 

      // Create Google Feed API address 
      var api = "http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=" + encodeURIComponent(url); 
      api += "&output=json_xml" 

      var newEntry; 
      // Send request 
      $.getJSON(api, function(data){ 
       console.log('testdata',data); // the response is xmlobjest 
       // Check for error 
       if (data.responseStatus == 200) { 

        var feeds = data.responseData.feed; 
        if (!feeds) { 
         return false; 
        } 

        // Get XML data for media (parseXML not used as requires 1.5+) 
        var xml = getXMLDocument(data.xmlString); 
        var xmlEntries = xml.getElementsByTagName('item'); 
        var entry = feeds.entries[0]; 
        var title = entry.title; 
        console.log('test',title); // it is not being displayed , it seems its not going inside the if statement 
        return title; 
       }else { 

       };    

      });    

} 

這是函數調用。

setInterval('update_rss1_feeds()',7000); 
setInterval('update_rss2_feeds()',8000); 
+0

它becouse你編程技巧水平...首先data.responseData可以是!= 200或data.responseData.feed == null ...函數(數據)中的第二個返回語句不會從函數getRss返回... – Selvin

+0

是的,我知道但我的問題是當我這樣做一個console.log(標題);我無法看到輸出。感謝您解釋data.responseData,我仍在學習javascript。但是在我的情況下是nt == 200。 –

+0

Becouse console.log(標題)永遠不會被調用...爲什麼...很難說沒有testdata控制檯輸出... – Selvin

回答

1

當我訪問:

http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&callback=?&q=[an rss feed url]&output=json_xml 

我得到一個錯誤「錯誤或丟失的回調或上下文」,如果我把我們的回調參數正常工作

http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&q=[an rss feed url]&output=json_xml 
+0

謝謝指出。但是當我做一個console.log(title)時,我仍然沒有得到輸出。 –