0

特定のユーザーの最新のツイートを JSON 形式で取得する php スクリプトがあります。JSON は、ページの ID に最新のツイートを表示する AJAX 関数に解析されます。上記を実行するためにタイマーが x 秒ごとに設定され、ユーザーがページを更新することなく最新のツイートを取得します。これは完全に機能します。

現在、表示する新しいツイートがあるときに通知を表示する通知機能を作成しようとしています。各ツイートには、取得した JSON に「id_string」という一意の ID があります。私がやりたいことは、生成された id_string の値を何らかの形で保存し、新しいツイートを取得するリクエストが行われるたびに、保存されたものと新しい 'id_string' をチェックし、異なる場合は通知を表示することです。

これをどうやって進めるかについてのアイデアは素晴らしいでしょうか?! 私はローカル ストレージを調べましたが、これにはあまり詳しくありません。私が知る限り、ローカル ストレージ内の他の文字列に対して文字列をチェックすることはできません。

私の質問を解釈するのに役立つ必要なコードは次のとおりです。

Twitter にリクエストを送信し、JSON 形式で出力を生成する PHP (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 に答える