Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我的聊天网站(php+ajax)让我的浏览器卡住了_Php_Ajax_Chat - Fatal编程技术网

我的聊天网站(php+ajax)让我的浏览器卡住了

我的聊天网站(php+ajax)让我的浏览器卡住了,php,ajax,chat,Php,Ajax,Chat,这是我用于各种目的的脚本,如滚动、从php获取数据等: <script> $(document).ready(function(){ $("#full_chat").animate({ scrollTop: $('#full_chat')[0].scrollHeight+1000}, 1500); setInterval(function refreshPage() { var user=$("#head").text(); $.post("retrie

这是我用于各种目的的脚本,如滚动、从php获取数据等:

<script>
$(document).ready(function(){
  $("#full_chat").animate({ scrollTop: $('#full_chat')[0].scrollHeight+1000}, 1500);
  setInterval(function refreshPage() { 
     var user=$("#head").text();
     $.post("retrieve.php",{ user:user }, function(data,status){
        if($.trim(data)!="0"){
            $("#full_chat").append("<span class='you'>"+data+"</span>");
            $('#full_chat').emoticonize();
            window.onblur = function () {
                $('#full_chat').bind("DOMSubtreeModified",function(){
                    $.titleAlert("New Message!", {
                        requireBlur:true,                                               
                        stopOnFocus:true,
                        //duration:10000,                                               
                        //interval:500
                    });
                });
            }
        }
  }); }, 1500);


$("#form").on('submit',function (e) {
    e.preventDefault();
    var user=$("#head").text();
    var dt = new Date();
    var time = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();

    var txt= $("#chat_input").val();
    $.post("chat.php",{ txt:txt,user:user,time:time },function(data,status){
        if(data=="OFFLINE"){
            $("#full_chat").append("User not available right now<br>");
        }else{
            $("#full_chat").append("("+time+")  ").append("<span class='me'>"+"Me: "+txt+"</span><br>").emoticonize({delay: 1,animate:false});
        }
    });

    $("#full_chat").animate({ scrollTop: $('#full_chat')[0].scrollHeight+1000}, 1500);
        $('#chat_input').val('');
    });

});
</script>
这是我用来从数据库获取聊天信息的PHP代码:

<?php 
session_start();
$other_user=$_POST['user'];
$flag=$_POST['flag'];
include_once('db.php');

$uname=$_SESSION['username'];
//date_default_timezone_set('Asia/Kolkata');

$q="select message,sender,time from chat where username='$uname' and delivered=0  and sender='$other_user' order by time ASC";
$qe = mysqli_query($con,$q);
$q1="UPDATE chat SET delivered=1  WHERE username='$uname' and sender='$other_user'" ;
$qe1 = mysqli_query($con,$q1);
if($r=mysqli_fetch_array($qe)) {
    echo "(".$r['2'].")  ". $r['1'].": ".$r['0']."<br>";
}else {
    echo "0";   
}
mysqli_close($con); 
?>

问题的原因可能是什么?是每1.5秒刷新一次页面还是其他方式?

这只是给你一个想法,没有经过测试

<script>
$(document).ready(function() {
var user = $("#head").text();
var postTimeout = 0;
var refreshPage = function(postInterval, postData) {
    $.post("retrieve.php", postData, function(data, status) {
        if (!postTimeout) {
            postTimeout = setTimeout(function() {
                refreshPage(postInterval, postData);
                postTimeout = 0;
            }, postInterval);
        }
        if ($.trim(data) != "0") {
            $("#full_chat").append("<span class='you'>" + data + "</span>");
            $('#full_chat').emoticonize();
            window.onblur = function() {
                $('#full_chat').bind("DOMSubtreeModified", function() {
                    $.titleAlert("New Message!", {
                        requireBlur: true,
                        stopOnFocus: true,
                        //duration:10000,                                               
                        //interval:500
                    });
                });
            }
        }
    });
}
$("#full_chat").animate({
    scrollTop: $('#full_chat')[0].scrollHeight + 1000
}, 1500);

refreshPage(1500, {user: user});


$("#form").on('submit', function(e) {
    e.preventDefault();
    var user = $("#head").text();
    var dt = new Date();
    var time = dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds();

    var txt = $("#chat_input").val();
    $.post("chat.php", {
        txt: txt,
        user: user,
        time: time
    }, function(data, status) {
        if (data == "OFFLINE") {
            $("#full_chat").append("User not available right now<br>");
        } else {
            $("#full_chat").append("(" + time + ")  ").append("<span class='me'>" + "Me: " + txt     + "</span><br>").emoticonize({
                    delay: 1,
                    animate: false
                });
            }
        });

        $("#full_chat").animate({
            scrollTop: $('#full_chat')[0].scrollHeight + 1000
        }, 1500);
        $('#chat_input').val('');
    });

});
</script>

当你说你的浏览器卡住时,到底发生了什么?天气冷吗?还是什么都没有加载?@Huey:它快冻僵了。出于好奇,你一直在延迟1的情况下调用的表情化函数是什么。当涉及javascript时,浏览器会冻结,这通常意味着您在某个地方有一个无限或很长的循环在持续运行。@Huey:emoticonize表情化:,:之类的东西。这可能是问题所在吗?我不熟悉这个库/jQuery插件,但由于您经常调用它,我想这可能是个问题。也许可以试着先把所有的参考文献都注释掉?如果没有,则系统地对代码进行注释,试图找出问题所在。也许从setInterval函数开始,检查问题是否源于此?