【问题标题】:Create a stream of new JSON data from PHP to jQuery创建从 PHP 到 jQuery 的新 JSON 数据流
【发布时间】:2014-10-17 21:30:45
【问题描述】:

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

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

【问题讨论】:

    标签: php jquery getjson


    【解决方案1】:

    客户端解决方案:

    您可以保留所有 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);
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-09-05
          • 1970-01-01
          • 1970-01-01
          • 2013-01-29
          • 1970-01-01
          • 2018-11-08
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多