我有一個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