3

I need to write a PhoneGap application (with HTML5 and JS, I don't need compatibility with IE) with AJAX so that it reads an RSS feed and looks up some specific information from it. The problem I'm having is that I have I don't the best way to do an RSS feed, and jQuery can't do XML. Any suggestions?

Dhaivat Pandya
  • 6,499
  • 4
  • 29
  • 43

5 Answers5

5

I recently made one using this tutorial : http://net.tutsplus.com/tutorials/javascript-ajax/how-to-build-an-rss-reader-with-jquery-mobile-2/

Jivings
  • 22,834
  • 6
  • 60
  • 101
  • This option wouldn't work as an app via phone gap thought would it? Mainly down to the fact that this is a web app so can run php. – jimbo Aug 23 '11 at 13:45
  • It works fine through PhoneGap. There's no problem running PHP with it. – Jivings Aug 24 '11 at 12:40
  • I don't actually know, I stay away from iPhone development. But the use of PHP in that tutorial should be easily possible in simple JavaScript. – Jivings Aug 26 '11 at 10:13
  • It would be great if someone could do this in javascript, as it would be just what I need... – jimbo Aug 31 '11 at 08:03
  • 1
    Coming in more than a year later - PHP isn't actually needed to run on the iPhone, it runs on a separate web server, which the iPhone talks to. – Dhaivat Pandya Nov 14 '12 at 01:46
4

I have just made a phonegap application that parses an external RSS feed using jFeed. I'll give you an example:

First, I include the following Java scripts in my index.html file:

<head>
    ...
    <script type="text/javascript" src="phonegap-1.0.0.js"></script>
    <script type="text/javascript" src="jquery/jquery-1.6.4.js"></script>
    <script type="text/javascript" src="jquery.mobile/jquery.mobile-1.0b3.min.js"></script>
    <script type="text/javascript" src="jquery.jfeed/dist/jquery.jfeed.js"></script>
    <script type="text/javascript" src="scripts/my.js"></script>
    ...
</head>

Then, in my.js I use the following:

parseFeed();

function parseFeed() {
$.getFeed({
    url: 'http://someUrl.com',
    dataType: "xml",
    success: function(feed) {

    $('#feedresult').empty();

    var html = '<ul data-role="listview">';

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

        var item = feed.items[i];

        html += '<li>'
        + '<a href="#article?id='
        + i
        + '">'
        + item.title
        + '</a>'
        + '</li>';
    }

    html = html + '</ul>';

    $('#feedresult').append(html);
    $('#main').page('destroy').page();

    }});
};

The code then creates a listview (jQuery mobile) in my #feedresult div where each entry represents a feed item. As phonegap utilizes some sort of web view that loads all content using the file:/// protocol ( http://groups.google.com/group/phonegap/browse_thread/thread/b60bda03bac6e9eb ), there is no issue in doing cross domain XMLHttpRequest from phonegap.

Lasse Christiansen
  • 10,205
  • 7
  • 50
  • 79
2

This question is old, but can be helpful to solve it in 2014 ;-).

I test many jQuery plugin to include a RSS reader, but the only this work like a charme in 1mn is zrssfeed

Just add the call (after call jquery and jquery mobile) in the header:

<script type="text/javascript" src="jquery.zrssfeed.min.js"></script>

And after start th jquery call like this :

<script type="text/javascript">
    $(document).ready(function () {
        $('#feedresult').rssfeed('http://my.wordpress.website.com/feed/', {
            limit: 5
        });
    });
</script>

I hope this help, Mike

1

What You mean jQuery can't do XML. jQuery is JavaScript and jQuery uses XMLHttpRequest while doing Ajax calls. See the name XML*. See: http://api.jquery.com/jQuery.ajax/. There is dataType param. You can pass xml to it. After that You will get dom object with all dom object methods.

You can event use it as second param to jQuery's selectors:

jQuery.get(url, {}, function (data) {
    var entries = $("entry", data);
    doSomething(entries);
}, 'xml');
petraszd
  • 4,249
  • 1
  • 20
  • 12
  • Jquery does a very bad of "parsing" HTML, it just makes the .innerHTML of a tag. – Dhaivat Pandya Jun 26 '11 at 16:59
  • First of all I am not trying to be offensive, but define "bad". Of course it is a little bit hacky, but is it slow? Because when I am using some library the only two things that interests me is: api and speed. I have no benchmarks or something that says jQuery method is fast. It is just general curiosity. – petraszd Jun 26 '11 at 19:32
  • Its bad because it interprets XML as HTML which is very dangerous, because not all valid XML is valid HTML. – Dhaivat Pandya Jun 28 '11 at 09:08
0

One option would be to use a RSS-to-JSON pipe, like this one here: http://pipes.yahoo.com/pipes/pipe.info?_id=2FV68p9G3BGVbc7IdLq02Q

sparkymat
  • 9,938
  • 3
  • 30
  • 48