轻微延迟提交javascript

时间:2014-08-02 20:08:45

标签: javascript onclick xmlhttprequest setinterval

你好,我有一个可以正常使用的聊天系统,但是当用户点击提交时,消息不会立即显示在发件人方面,会有轻微的延迟。有时它会在发送方之前出现在接收方。任何改善这种情况的帮助。

      <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>

1 个答案:

答案 0 :(得分:0)

Todo,您必须使用innerHTML将文本直接附加到页面,而无需等待来自服务器的Ajax调用的答案。因为服务器端的处理总是需要时间,所以答案也是如此。然后当你得到答案时,用ajax答案替换附加的文本。