你好,我有一个可以正常使用的聊天系统,但是当用户点击提交时,消息不会立即显示在发件人方面,会有轻微的延迟。有时它会在发送方之前出现在接收方。任何改善这种情况的帮助。
<script>
function submitChat(){
if ( form1.msg.value == ''){
alert('enter your message');
return false;
}
$('#imageload').show();
var msg = form1.msg.value;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4 && xmlhttp.status == 200){
// var Data = JSON.parse(xmlhttp.responseText);
document.getElementById('chatlogs').innerHTML;
$('#imageload').hide();
}
}
xmlhttp.open('GET', 'insert.php?&msg='+msg, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send(null);
document.forms['form1'].reset();
}
$(document).ready(function(){
$("#chatlogs").load('reg.php', function(){
$("#chatlogs").animate({ scrollTop: $("#chatlogs")[0].scrollHeight}, "fast");
window.setInterval(function() { var elem = document.getElementById('chatlogs'); elem.scrollTop = elem.scrollHeight; }, 340);
});
});
$(document).ready(function(e){
$.ajaxSetup({cache:false});
setInterval(function(){$('#chatlogs').load('reg.php')}, 2000);
});
$(document).keyup(function (e) {
if ($(".chatbox:focus") && (e.keyCode === 13 && e.shiftKey === false) ) {
submitChat();
e.preventDefault();
}
});
</script>
答案 0 :(得分:0)
Todo,您必须使用innerHTML将文本直接附加到页面,而无需等待来自服务器的Ajax调用的答案。因为服务器端的处理总是需要时间,所以答案也是如此。然后当你得到答案时,用ajax答案替换附加的文本。