【问题标题】:Problem parsing Rss feed using javascript使用 javascript 解析 Rss 提要的问题
【发布时间】:2011-08-03 16:02:06
【问题描述】:

我正在尝试定期读取 两个 Rss 提要网址,并将最新提要标题显示为我的 android 应用中的通知。

由于每 8000 毫秒调用一次 setinterval 函数,我想确保没有相同标题的重复通知。

当我在 getrss 函数中执行 console.log 时,我能够看到 xml 对象,但是 我看不到为 var xml 、 var entry 或 var title 输出的任何数据。 请指出我可能会继续。

/* ---------------------- 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 : --------- */

这是我解析 Rss 提要时的 getrss 函数。我可能在这里做错了。

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

【问题讨论】:

  • 这是因为您的编程技能水平...第一个 data.responseData 可以是!= 200 或 data.responseData.feed == null ... function(data) 中的第二个返回语句不会返回从函数 getRss ...
  • 是的,我知道,但我的问题是当我执行 console.log(title);我无法看到输出。我仍在学习 javascript 感谢您对 data.responseData 的解释。但在我的情况下,它是不是 == 200。
  • 因为 console.log(title) 从来没有被调用过......为什么......没有 testdata 控制台输出很难说......
  • 我可以用jfeed代替吗!!

标签: javascript android parsing rss cordova


【解决方案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 

【讨论】:

  • 感谢您指出。但是当我执行 console.log(title); 时仍然没有得到输出;
猜你喜欢
  • 2023-03-31
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多