为了简单起见,我只是想知道我是怎么做的,如果发现新的数据,如果它找到它并且不是一遍又一遍的相同数据,那么我是否会对我的ajax声明再次。我怎么可能将最后一个id存储为变量,以便在搜索更多新记录时重复使用它?
有人向我提到我也可以将新的通知想法保存为返回,所以当ajax重新启动时,它会使用它来查找下一组新的结果。
有没有人有任何想法如何实现这些?
<script type="text/javascript">
setInterval(function(){
var time = new Date().getTime();
var notification_id="<?php echo $notification_id['notification_id'] ;?>"
$.ajax({
type: "GET",
url: "viewajax.php?notification_id="+notification_id+"&time="+time ,
dataType:"json",
cache: false,
success: function(response){
if(response.num){
$("#notif_actual_text-"+notification_id).prepend('<div id="notif_actual_text-'+response['notification_id']+'" class="notif_actual_text"><a href="'+response['notification_id']+'">'+response['notification_content']+' </a><br />'+response['notification_time']+'</div></nr>');
$("#mes").html(''+ response.num + '');
}
}
});
},20000);
</script>
答案 0 :(得分:1)
关于存储最后一个ID,您可以使用:
window.localStorage.setItem('key', 'value');
然后当你想再次获得它时,你应该使用:
var lastId = window.localStorage.getItem ('key');
关于重复问题,您应该有一个内部存储空间来处理收到的数据。可能是一个阵列可以作为存储帮助,也可以将此阵列存储在本地存储中。
处理完此数据存储后,您可以应用以下内容来验证您的数据没有重复数据:
var dataHandler = function (response){
var isDuplicate = false, storedData = window.localStorage.getItem ('key');
for (var i = 0; i < storedData.length; i++) {
if(storedData[i].indexOf(response) > -1){
isDuplicate = true;
}
}
if(!isDuplicate){
storedData.push(response);
}
};
var printer = function(response){
if(response.num){
$("#notif_actual_text-"+notification_id).prepend('<div id="notif_actual_text-'+response['notification_id']+'" class="notif_actual_text"><a href="'+response['notification_id']+'">'+response['notification_content']+' </a><br />'+response['notification_time']+'</div></nr>');
$("#mes").html(''+ response.num + '');
}
};
更新
var notification_id = window.localStorage.getItem ('lastId');
$.ajax({
type: "GET",
url: "viewajax.php?notification_id="+notification_id+"&time="+time ,
dataType:"json",
cache: false,
success: function(response){
if(response){
dataHandler(response);
if(response.num){
window.localStorage.setItem('lastId', response.num);
}
});
},20000);