Проблема синтаксического анализа RSS-канал с использованием JavaScript - PullRequest
0 голосов
/ 03 августа 2011

Я пытаюсь читать два URL-адреса RSS-канала через равные промежутки времени и отображать заголовок последнего канала в виде уведомления в приложении для Android.

Поскольку функция setinterval вызывается каждые 8000 мс, я хочу убедиться, что нет повторяющихся уведомлений с одинаковым названием.

Когда я делаю console.log внутри функции getrss, я могу видеть объект 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 : --------- */

Это функция 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);

1 Ответ

1 голос
/ 03 августа 2011

Когда я получаю доступ:

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