AJAX没有刷新聊天消息部分

时间:2014-02-18 23:57:58

标签: javascript ajax

我最近有一个网站播出,无法让用户刷新页面(因此,ajax),无法让聊天工作。但另一端的人仍然需要刷新才能看到最新消息。我们在同一个房间,所以我可以看到聊天是否刷新;它没有,这是代码

<script type="text/javascript">
var scroller = function(){
  posts = document.getElementById("posts");
  posts.scrollTop = posts.scrollHeight; 
}
var menu = 3;
var checksum = function(){
  if (menu == 3){
    document.getElementById('smileys').style.display="block";
    document.bob.smileyhider.innerHTML="&minus;";
    menu=1;
  }
  else {
    document.getElementById('smileys').style.display="none";
    document.bob.smileyhider.innerHTML="+";
    menu=3;
  }
}
//Chat ajax loader
var updater = 10;
function update(){
  var xhr;
  if(updater < 200){ updater = 200 }
  if (window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }
  else { xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
  xhr.onreadystatechange = function(){
    if (xhr.readyState==4 && xhr.status == 200){
      document.getElementById('posts').innerHTML = xhr.responseText;
    }
  }
  setTimeout(update, (++updater)*10);
  xhr.open("GET","chatlog<?php echo date("d");?>.log",true);
  xhr.send(null);
} 
</script>

1 个答案:

答案 0 :(得分:0)

  1. 您实际上从未调用更新来启动ajax请求。我不会把它嵌套
  2. 您想要使用setInterval。 setTimeout只会运行一次。
  3. 我只会使用更新程序的静态值,例如3秒
  4. /

    var updater = 3000;
    
    function update(){
      var xhr;
      if(updater < 200){ updater = 200 }
      if (window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }
      else { xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
      xhr.onreadystatechange = function(){
        if (xhr.readyState==4 && xhr.status == 200){
          document.getElementById('posts').innerHTML = xhr.responseText;
        }
      }
    
      xhr.open("GET","chatlog<?php echo date("d");?>.log",true);
      xhr.send(null);
    } 
    
    setInterval(update, updater);