创建从PHP到jQuery的新JSON数据流

时间:2011-08-27 00:39:29

标签: php jquery getjson

我在PHP中有这个代码:

<?php

$data = file_get_contents('http://newsrss.bbc.co.uk/rss/sportonline_uk_edition/football/rss.xml');

$xml = simplexml_load_string($data);

echo json_encode($xml);

?>

这个jQuery:

setInterval(function() {

$.getJSON('bbc.php', function(data) {
    console.log(data);
    $.each(data.channel.item, function(index, item){
        $('.container').append("<p data-date='" + item.pubDate + "'>" + item.title + "</p>");
    });
});

}, 5000);

因此,正如您所看到的,它将在前一个数据集下面附加相同的数据集,从而创建许多重复的条目。在这里,使用客户端或服务器端,仅发送回/显示新数据而不是再次输出相同数据的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

客户端解决方案:

您可以保留所有rss项的全局JavaScript数组。当新项目到来时 - 您检查它是否存在于该数组中,然后将其附加到容器中。

var myRSS =[];

function rssReader() {

    $.getJSON('bbc.php', function(data){
        $.each(data.channel.item, function(index, item){
            // check if item title is stored in the array   
            if (jQuery.inArray(item.title, myRSS)) { 
                //do nothing
            } else {
                // save item title in the array
                myRSS.push(item.title);

                // publish item  
                $('.container').append("<p data-date='" + item.pubDate + "'>" + item.title + "</p>");
            }
        });
    });

}

setInterval(rssReader(), 5000);

答案 1 :(得分:1)

您可以生成rss订阅源数据的校验和,并将其与JSON响应一起发送。然后在客户端在每个后续请求中将该校验和发送回服务器,然后服务器将接收到的校验和与数据校验和进行比较,如果它们不同则仅响应完整数据集。

答案 2 :(得分:1)

将RSS条目写入服务器端的某种数据库,将其URL用作唯一索引,然后从数据库查询创建JSON。