【发布时间】:2013-03-05 04:02:44
【问题描述】:
我有一个 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
});
【问题讨论】:
-
为什么需要本地存储来做到这一点?您可以将最新的 tweet_id 存储在 javascript 变量中,并每次都将其与新变量进行检查。您还可以使用 javascript 数组来记录所有推文 ID 并将新的 ID 与它进行比较。
-
“据我所知,您无法根据本地存储中的其他字符串检查字符串” - 为什么不呢?它会运作良好。你试过了吗?
-
@JaspalSingh:例如,让脚本在手动刷新页面时仍然有效 - 这将是一个不错的功能
-
@tom: 不要使用
eval!!!如果您需要,请使用JSON.parse,但实际上 jQuery 已经为您做到了。只需设置tweets = result。 -
@Bergi 如果页面刷新,您可以从服务器端再次创建整个数据。如果他的网站在没有客户端资源的情况下也能正常运行,那么他的网站将不必要地使用客户端资源。
标签: php javascript json jquery local-storage