2015-04-05 17 views
0

當我在聊天中發佈消息時,它不會讓我再發帖。我相信這是與相關的代碼發送:我正在創建一個聊天,但每次發送消息時,都不會讓我發送另一條消息,就像表單不起作用一樣?

window.typing = false; 
var posted = 0; 
var canPost = 1; 
var donotrefresh = 0; 

document.forms['send'].addEventListener('submit', function (event) { 

    event.preventDefault(); 
    if (!this.message.value || !canPost) { 
     return 0; 
    } 
    var form = this; 
    var message = this.message.value; 
    this.message.value = ""; 
    this.message.focus(); 
    var ajax = new XMLHttpRequest(); 

    posted = 1; 
    canPost = 0; 
    chat.refresh(); 
    chat.messages.scrollTop = 0; 

    ajax.onreadystatechange = function() { 
     if (ajax.readyState >= 4 && ajax.status == 200) { 
      if (!ajax.responseText) { 
       canPost = 1; 
       posted = 0; 
      } 
     } 
    } 

    ajax.open("GET", "/chat/ajax.php?req=post&chatmsg=" + encodeURIComponent(message), true); 
    ajax.send(null); 
}, false); 

這裏是我提交代碼:

<form name="send" style="height:100px;width:100%"> 
    <input type="text" name="message" style="width:60%;height:2em;resize:vertical;opacity:0.8;" maxlength="220" placeholder="Your message to send..." required /> 
    <input type="submit" value="Send" style="vertical-align:top;opacity:0.8;" /> 
</form> 
+0

爲什麼這個'canPost = 0'? – callback 2015-04-05 08:18:53

+0

你有什麼嘗試?當你「不能再發布」時,你看到了什麼確切的行爲?你在瀏覽器的JavaScript控制檯中尋找什麼? – 2015-04-05 08:19:16

+0

您確定ajax請求成功完成嗎?如果不是,canPost永遠不會再次設置爲1,因此您的提前退貨將取消進一步發送消息的方法。或者看看你的javascript控制檯的「網絡」選項卡,或者向回調函數(設置canPost = 1的位置)插入一個斷點(或簡單的日誌記錄輸出) – 2015-04-05 08:30:43

回答

0

嘗試刪除,如果(ajax.responseText!)

ajax.onreadystatechange = function() { 
    if (ajax.readyState >= 4 && ajax.status == 200) { 
     canPost = 1; 
     posted = 0; 
    } 
} 

待辦事項你需要「發佈」變量?看起來這不再被代碼使用。 canPost的目的似乎在同一時間避免請求。這裏是否真的要避免這一點?

+0

非常感謝@jan這完美的工作!我真的不知道你的問題是什麼,但它做我需要的,所以我很高興,謝謝你:) – Buzzytechy 2015-04-05 22:24:48

相關問題