0

我有一个 php 脚本,它以 JSON 格式获取特定用户的最新推文。JSON 被解析为一个 AJAX 函数,该函数在页面上的一个 ID 中显示最新的推文。每 x 秒设置一个计时器来执行上述操作,检索最新的推文,而无需用户刷新页面。这完美地工作。

我现在正在尝试创建一个通知功能,当有新推文要显示时显示通知。在检索到的 JSON 中,每条推文都有一个名为“id_string”的唯一 ID。我想要做的是以某种方式存储生成的 id_string 的值,然后每次请求检索新推文时,检查新的 'id_string' 与存储的'id_string',如果不同则显示通知。

关于如何去做这件事的任何想法都会很棒?!我已经研究过本地存储,但我对此不是很熟悉,据我所知,您无法根据本地存储中的其他字符串检查字符串。

这是帮助解释我的问题的必要代码:

PHP 向 twitter 发出请求并生成 JSON 格式的输出 (tweets.php):

require_once('config/FrameFunctions.php');

$output = array();

foreach ($tweeters as $i => $tweeter){
    $theTweeter = new Tweeter($tweeter, $tmhOAuth);
    $allinfo = $theTweeter->getTweets();
    $output[$i] = $allinfo;
}

header("Content-type: application/json");
echo json_encode($output);

每隔 x 秒发出请求并生成客户端输出的 javascript:

$(document).ready(function() {

   $('.fancybox').fancybox();
   /*
   *  call ajax function and update latest
   */        

    var refreshTweets = function() {
      console.log("updating..");
      $.ajax({url:"tweets.php",success:function(result){
        tweets = eval(result);

        for(i=0;i<tweets.length;i++){
            $("#latesttweet"+(i+1)).html(
               tweets[i][0].user.name + ": " + tweets[i][0].text
             );  
        }

      }});

    }
    refreshTweets();

    //set the time in milliseconds here for each refresh
    setInterval(refreshTweets , 30000); //Interval

});
4

2 回答 2

1

这是基于我上面的评论的解决方案

/*
NOTE : allTweets will have to be populated with all the tweets ids on the page prior           
to being called in refreshTweets so that it does not trigger fake notifications
*/

    var allTweets = Array();

    $(document).ready(function() {

        $('.fancybox').fancybox();
        /*
         *  call ajax function and update latest
         */        

        var refreshTweets = function() {
            console.log("updating..");
            $.ajax({url:"tweets.php",success:function(result){
                    tweets = result;

                    for(i=0;i<tweets.length;i++) {

                        //check if its a new tweet or not
                        if (allTweets[tweets[i][0].id_string] === undefined) {
                            allTweets[tweets[i][0].id_string] = 1;    
                            //trigger notification here!
                        }

                        $("#latesttweet"+(i+1)).html(
                        tweets[i][0].user.name + ": " + tweets[i][0].text

                    );  
                    }

                }});

        }
        refreshTweets();

        //set the time in milliseconds here for each refresh
        setInterval(refreshTweets , 30000); //Interval

    });
于 2013-03-16T15:06:09.167 回答
0

我想与其他人一起评论,但我想我太新了。

无论如何,如果您不存储敏感信息,您可以将数据存储在 JSON 中,PHP 可以快速写入和读取较小的文件。如果您要存储大量数据,则可能需要考虑将值保存到 MySQL 数据库或类似的东西。

设置 JSON 存储和 MySQL 数据库似乎在这里有很好的记录。

于 2013-03-16T15:08:17.800 回答