我有一个AJAX函数来检查新消息,然后将新消息预先添加到#message
。但是,我的问题是这个函数每20秒触发一次,但是每当你点击立即触发该函数的刷新按钮时,它就会混乱起来。下面是我对AJAX功能:AJAX重新加载按钮有时会多次预加载相同的消息
function ajaxMail() {
var message_id = $('.line:first').attr('id');
jQuery.ajax({ //new mail
type: 'get',
dataType: 'text',
url: "/employee/message/check_mail.php",
data: {
latest_id: message_id,
t: Math.random()
},
success: function(data, textStatus) {
$('#messages_inner').prepend(data);
}
});
}
function updateTitles() {
//if(titleChange !== false) {
$.get('update.php?type=title', function(data) {
document.title = data;
});
//}
$.get('update.php?type=header', function(data) {
$('#heading').html(data);
});
$.get('update.php?type=total', function(data) {
$('#total').html('Total messages: ' + data);
});
setTimeout("updateTitles();ajaxMail();", 20000);
}
updateTitles();
而对于这个刷新按钮是我用:因为按钮或
$(document).ready(function() {
$('#refresh').click(function() {
ajaxMail();
updateTitles();
});
});
有时候,同样的确切消息被前置到消息的div一些东西。 (但是,当我刷新当然还有不再同一消息的2)这是当同样的信息被预先考虑多次一个时间:
首先,我按下刷新按钮,它预先考虑新消息。但是大约5秒钟之后,功能再次触发,并由于某种原因再次添加了相同的信息。另外,正如您可以看到收件箱计数为2,因为实际上只有2(“测试”和“Test12345”),但由于某种原因,“Test12345”被预置了2次。
有谁知道它为什么这样做?如果您需要查看,我还可以提供check_mail.php
的代码。
谢谢@ 3nigma将第二个代码放在代码框中。我以前有过,但有些事情搞砸了。 – Nathan
只是尝试在你的ajaxMail ajax req中设置'cache:false',尽管Math.Random()已经在做它 – Rafay
@ 3nigma所以,只需在$ .ajax中添加'cache:false'?但是,如果Math.Random()已经在做什么'cache:false'会怎么做? – Nathan