2012-04-08 47 views
0

我遇到了這個聊天系統的一些問題。它不斷給我回這些錯誤,它不應該。Javascript彈出錯誤

它不斷給我彈出說:「地鼠」和

我看過了代碼,但不能發現任何錯誤這很煩人。任何人都知道什麼錯

<script type="text/javascript"> 

    var maxUsers = 50; // maximum is 50; 
    var updateResponse = ""; 
    var stampResponse = ""; 
    var resetResponse = ""; 
    var stampRef = ""; 
    var pollInterval = ""; 
    var nUsers = []; 
    var nUserColor = ["#ff00ff","#ff6347","#1e90ff","#9932cc","#daa520","#a52a2a","#C0C0C0","#FFFF99","#CC6633","#FF9900"]; 

    function parseUpdateResponse(){ 

     var msgHistory = updateResponse; 
     var tmpUsers = msgHistory.match(/\~([^\~]+)\@/g); 
     if (tmpUsers != null) 
      { 
      tmpUsers = tmpUsers.join("").replace(/[\~\s]/g,"").split("@"); 
      tmpUsers.length = tmpUsers.length-1; 
      nUsers = []; 
      var obj = new Object(); 
      for (i=0; idx=tmpUsers[i]; i++) 
       { 
       obj[idx] = 1; 
       } 
      for (idx in obj) 
       { 
       nUsers.push(idx); 
       } 
      } 
     msgHistory = msgHistory.replace(/\#/g,"<br>").split("|"); 
     for (i=0; i<nUsers.length; i++) 
      { 
      for (n=0; n<msgHistory.length; n++) 
       { 
       if(msgHistory[n].match(nUsers[i]) != null) 
        { 
        msgHistory[n] = msgHistory[n].replace(/\~([^\~]+)\~/,"<strong><font color="+nUserColor[i]+">$1: <\/font><\/strong>"); 
        } 
       } 
      } 
     msgHistory = msgHistory.join(""); 
     var nChatBox = document.getElementById('msgDisp'); 
     nChatBox.innerHTML = msgHistory; 
     if (document.forms[0]['user'].value == "") 
      { 
      document.forms[0]['user'].focus(); 
      } 
     else { 
      document.forms[0]['message'].focus(); 
      } 
     if (nChatBox.scrollHeight > 0) 
      { 
      nChatBox.scrollTop = nChatBox.scrollHeight; 
      } 
    } 

    function updateChat(){ 

     var updateRequest = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 
     updateRequest.onreadystatechange = function() 
      { 
      if (updateRequest.readyState == 4) 
       { 
       if (updateRequest.status == 200) 
        { 
        updateResponse = updateRequest.responseText; 
        parseUpdateResponse(); 
        } 
       else { 
        alert('Error updateChat.php File '+ updateRequest.statusText); 
        } 
       } 
      } 
     var forceGET = "?n="+ parseInt(Math.random()*999999999); 
     updateRequest.open("GET", "ChatFiles/updateChat.php"+forceGET, true); 
     updateRequest.send(null); 
     pollInterval = setInterval("pollStamp()",7500); 
    } 

    function parseStampResponse(){ 

     var currStamp = stampResponse; 
     if (currStamp != stampRef) 
      { 
      stampRef = currStamp; 
      clearInterval(pollInterval); 
      updateChat(); 
      } 
    } 

    function pollStamp(){ 

     var stampRequest = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 
     stampRequest.onreadystatechange = function() 
      { 
      if (stampRequest.readyState == 4) 
       { 
       if (stampRequest.status == 200) 
        { 
        stampResponse = stampRequest.responseText; 
        parseStampResponse(); 
        } 
       else { 
        alert('gopher '+ stampRequest.statusText); 
        } 
       } 
      } 
     var forceGET = "?n="+ parseInt(Math.random()*999999999); 
     stampRequest.open("GET", "ChatFiles/pollStamp.php"+forceGET, true); 
     stampRequest.send(null); 
    } 

    function sendMessage(){ 

     var sendRequest = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 
     sendRequest.onreadystatechange = function() 
      { 
      if (sendRequest.readyState == 4) 
       { 
       if (sendRequest.status == 200) 
        { 
        pollStamp(); 
        } 
       else { 
        alert('Error newMessage.php File '+ sendRequest.statusText); 
        } 
       } 
      } 
     var forceGET = "?n="+ parseInt(Math.random()*999999999); 
     var infoStr = forceGET +"&user="+document.forms[0]['user'].value; 
     infoStr += "&message="+document.forms[0]['message'].value; 
     document.forms[0]['message'].value = ""; 
     sendRequest.open("GET", "ChatFiles/newMessage.php"+infoStr, true); 
     sendRequest.send(null); 
    } 

    function checkSubmit(evt){ 

     var msgBox = document.forms[0]['message']; 
     msgBox.value = msgBox.value.replace(/[\r\n\~|#@]/g,""); 
     var key = (window.Event) ? evt.which : evt.keyCode; 
     if (key == 13) 
      { 
      if (msgBox.value == "" || document.forms[0]['user'].value == "") 
       { 
       return false; 
       } 
      if (nUsers.length == 0) 
       { 
       sendMessage(); 
       return false; 
       } 
      else { 
       for (i=0; i<nUsers.length; i++) 
        { 
        if (document.forms[0]['user'].value == nUsers[i]) 
         { 
         sendMessage(); 
         return false; 
         } 
        } 
       } 
      if (nUsers.length < maxUsers) 
       { 
       sendMessage(); 
       return false; 
       } 
      else { 
       alert('No more than '+maxUsers + ' Users at a time'); 
       } 
      } 
    } 

    function parseResetResponse(){ 

     document.getElementById('pWord').value = resetResponse; 
     if (resetResponse == "Okay") 
      { 
      nUsers.length = 0; 
      document.forms[0]['user'].value = ""; 
      document.forms[0]['message'].value = ""; 
      } 
    } 

    function resetChat(){ 

     var resetRequest = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); 
     resetRequest.onreadystatechange = function() 
      { 
      if (resetRequest.readyState == 4) 
       { 
       if (resetRequest.status == 200) 
        { 
        resetResponse = resetRequest.responseText; 
        parseResetResponse(); 
        } 
       else { 
        alert('Error resetChat.php File '+ resetRequest.statusText); 
        } 
       } 
      } 
     var forceGET = "?n="+ parseInt(Math.random()*999999999); 
     var infoStr = forceGET + "&admin="+document.getElementById('pWord').value; 
     resetRequest.open("GET", "ChatFiles/resetChat.php"+infoStr, true); 
     resetRequest.send(null); 
    } 

    onload=updateChat; 

</script> 
</head> 
    <body> 
     <div id='msgDisp' class='chatBox'></div> 
     <br> 
     <form action=""> 
     <hr size=1> 
     <center>Press enter on your keyboard to submit your message</center> 
     <hr size=1> 
     <input type="hidden" name="user" value="<? echo("$_SESSION[usr_name]");?>" />  
     <br /> 
     <textarea name='message' rows='4' cols='92' style='overflow:auto' onkeyup="checkSubmit(event)"></textarea> 
      </fieldset> 
     </form> 
     <br> 
    </body> 
</html> 

由於提前,

+0

這是很好,你張貼你的代碼,但請嘗試縮小它一點點,你認爲造成的問題。例如。 *什麼時候發生?點擊某些後?找到與之相對應的代碼。此外,如果它說'gopher',請嘗試在代碼中搜索該單詞。 – Armatus 2012-04-08 09:25:23

+0

它不會一直髮生,它主要發生在大約5分鐘左右之後。我嘗試了使用Google搜索並查看問題所在,甚至試圖將文件移動到相同的文件夾中,但未修復它。感謝無論如何:) – 2012-04-08 09:27:28

+0

omg使用jquery ... – dynamic 2012-04-08 09:53:32

回答

0

嘗試刪除行105:

     alert('gopher '+ stampRequest.statusText); 

希望這有助於!

0

您的功能pollStampChatFiles/pollStamp.php發送AJAX請求。這將返回一個錯誤(可能是404,頁面沒有找到),這將導致該位:

stampRequest.onreadystatechange = function() 
{ 
    if (stampRequest.readyState == 4) 
    { 
     if (stampRequest.status == 200) 
     { 
      stampResponse = stampRequest.responseText; 
      parseStampResponse(); 
     } 
     else { 
      alert('gopher '+ stampRequest.statusText); 
     } 
    } 
} 

進入了「其他」分支和警覺「地鼠」。 pollStamp設置爲在頁面加載後的功能updateChat加載頁面後執行7.5秒。刪除'alert'行(第105行)停止消息,但它不能解決對「pollStamp.php」腳本的請求不起作用。

檢查pollStamp.php是否位於給定路徑中:它需要位於文件夾ChatFiles中,該文件夾需要與腳本本身位於同一文件夾中。如果沒有,請在此處調整路徑或將文件移到其所屬的位置。