我是一名有帮助的助手,可以为您翻译以下内容。这是关于编程的内容,涉及到一个聊天Web应用程序,需要将数据存储在一个文本文件中,并使用JavaScript/jQuery函数通过Ajax每1000ms检索数据。为了避免每秒调用该函数,是否有一种方法可以使页面接收到新数据并仅在存在新数据时调用函数?下面是当前的函数:
setInterval (loadLog, 1000);
function loadLog(){
var chatCode = $('input#chatCode').val();
var oldscrollHeight = $("#chatContent").innerHeight();
var oldNum = $('#chatContent>div').length;
$.ajax({
url: "sessions/chats/log_"+chatCode+".html",
cache: false,
success: function(html){
$('#chatContent').html(makePretty(html));
}
//Auto-scroll
var newscrollHeight = $("#chatContent").innerHeight(); //Scroll height after the request
if(newscrollHeight > oldscrollHeight){
$("#chatbox").animate({ scrollTop: newscrollHeight }, 'normal');
}
}
})
}
并发送数据:
$('form#chatSubmit').submit(function(e){
var chatCode = $('input#chatName').val();
$('#chatContent').append('<span id="sending">Sending...</span>');
var newscrollHeight = $("#chatContent").innerHeight();
$("#chatbox").animate({ scrollTop: newscrollHeight }, 'normal');
var clientmsg = $("#usermsg").val();
var chatName = "<?php echo $_SESSION['code']; ?>";
var chatData = [clientmsg,chatName,chatCode];
var jsonChatData = JSON.stringify(chatData);
$.post("inc/chatpost.php", { text: clientmsg, name: chatName, code: chatCode })
.done(function(data){
//console.log(data);
});
$("#usermsg").val('');
return false;
e.preventDefault();
});
eventListener
! - Ben