如何避免使用Ajax jquery加载数据两次?

时间:2017-10-24 21:53:35

标签: php jquery ajax

Hello Stackoverflow今天的人我有一个问题是我聊天但是有时加载相同数据的2到3倍我不知道错误在我的ajax中哪里但是我不知道是不是是在这里更新或只是复制好消息我留下代码说出发生了什么我希望你帮助我并提前感谢

前端代码(html,css,js):

 <html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <style>
    .mostrar_mensaje {
        height: 440px;
        padding: 12px;
        width: 96%;
        /* border-radius: 5px; */
        overflow-x: hidden;
        border-top: 1px solid #e0e0e0;
    }
    </style>
</head>
<body>
<div class="mostrar_mensaje" id="mostrar_mensaje"></div>

<script>
    $(document).ready(function(){
    var out, isScrolledToBottom;
    out = document.getElementById("mostrar_mensaje"); // outer container of messages

    // initial load of chat                     ////**Chat post id
    cargaMensajeChat(1,llenaMensajePrimeraVez);

    // check for chatter every second
    setInterval(function() {

        isScrolledToBottom = checkIfScrolledBottom();
        cargaMensajeChat(0,llenaMensajeSiguientesVeces);

    }, 1000);

    function checkIfScrolledBottom() {
        // allow for 1px inaccuracy by adding 1
        return out.scrollHeight - out.clientHeight <= out.scrollTop + 1;
    }

    function scrollToBottom(scrollDown) {
        if (scrollDown)
        out.scrollTop = out.scrollHeight - out.clientHeight;
    }

    //funcion carga mensajes del servidor por ajax
    function cargaMensajeChat(vFlagPrimeraVez,callback){
        var vidchat=obtenerUltimoIdChat();
        $.ajax({
            method: "GET",
            url: "load_chat.php",
            data: {
                flagPrimeraVez : vFlagPrimeraVez,
                idchat : vidchat
            },
            success: function(data){
                callback(data);             
            }
        })
    }
    //funcion llena div primera vez
    function llenaMensajePrimeraVez(contenido){
        $('#mostrar_mensaje').html(contenido);
    }
    //funcion llena agrega solo nuevos mensajes (append)
    function llenaMensajeSiguientesVeces(contenido){
        if($.trim(contenido)!=''){
            $('#mostrar_mensaje').append(contenido);
            out = document.getElementById("mostrar_mensaje");
            scrollToBottom(isScrolledToBottom);
        }
    }
    //recorre los div del chat, todos tienen atributo id="chat", coge el ultimo que es quien tiene el mayor id
    function obtenerUltimoIdChat(){
        return $("div[idchat]:last").attr("idchat");
    }
});
</script>
</body>
</html>

代码php:

   require("conectarbd.php");
    include ("app/data.php");

////**This file is for languages    
if (@$_COOKIE["muser"]!='') {   
    require ("languages/".userdata('language',false).".php");
} else {
    require ("languages/".$Language.".php");`enter code here`
}




$id = $_GET['v']; 
////** This is to know if the room exists   
    $DataPaste = mysql_query("SELECT * from paste WHERE pasteID=$id ");
if (mysql_num_rows($DataPaste) == 0)
{
            echo '<br><br><br><center><img src="'.$sitio_url.'img/500.png"></img><br>
            '.$Languages_136.'!</center>';

}else{ 
    //SO, recibe flag primera_vez que carga pagina
    $flagPrimeraVez = $_GET['flagPrimeraVez'];
    @$idchat = $_GET['idchat'];

    //SO, validando flag
    if($idchat!='' && $idchat>0){//SO, seria despues de la primera vez, entonces se carga solomensajes nuevos
        $data_chat = mysql_query("SELECT * from chat WHERE post=$id AND id>$idchat ");            
    }else{//SO, de lo contrario solo carga todos los mensajes
        $data_chat = mysql_query("SELECT * from chat WHERE post=$id ");
    }

        if (mysql_num_rows($data_chat) == 0)
        {         
            //SO, en primera vez si no hay mensajes se muestra imagen no_messages.png       
            if($flagPrimeraVez=='1'){
                    echo '<br><br><br><center><img src="'.$sitio_url.'img/no_messages.png"></img><br>
                    '.$Languages_12.'!</center>';
            }else{//SO, de lo contrario se envia mensaje en blanco
                echo '';
            }
        }else{  

            while($res=mysql_fetch_array($data_chat)){
                    $ads=$res["ads"];
                    $pads=$res["pads"];
                    $embed=$res["link"];
                    $tipo=$res["tipo"];

/////Mensaje
                        $come[0]='';
                        $come[1]=''.$Ads_Two.'';
// // // // // // // // // // // // // // Content Type------------------------->
// // // // // // chat
                         //SO, agregando idchat
                         $type[0]='<div idchat='.$res["id"].' id="chat" class="message__chat">
                                            <img class="resize--img" src="'.date_image(''.$res["userID"].'').'" data-toggle="modal" data-target="#view-modal-user" data-id="'.$res["userID"].'" id="getUser">
                                        <div id="chat" class="wall_chat_body">
                                            <p class="message__text"><spam class="message__username" data-toggle="modal" data-target="#view-modal-user" data-id="'.$res["userID"].'" id="getUser">'.date_name_user(''.$res["userID"].'').'</spam><spam class="message__username_time">'.time_elapsed($res["time"]).'</spam><br>'.parseString(nl2br(bb_parse(Hashtag(''.$res["mensaje"].'')))).'</p>
                                        </div>
                                   </div>'.$come[$ads].'';
// // // // // // imagen        
                        //SO, agregando idchat
                        $type[1]='<div idchat='.$res["id"].' id="chat">
                                <div class="message__img">
                                        <img class="resize--img" src="'.date_image(''.$res["userID"].'').'" alt="" data-toggle="modal" data-target="#view-modal-user" data-id="'.$res["userID"].'" id="getUser">
                                    <div class="wall_chat_body_image">
                                        <p class="message__text"><spam class="message__username" data-toggle="modal" data-target="#view-modal-user" data-id="'.$res["userID"].'" id="getUser">'.date_name_user(''.$res["userID"].'').'</spam><spam class="message__username_time">'.time_elapsed($res["time"]).'</spam></p>
                                    </div>
                                </div>
                                    <div class="message__chat m--user">
                                        <div class="message__text t--user">
                                            <a data-toggle="modal" data-target="#view-modal-media" data-id="'.$res["id"].'" id="getMedia">
                                            <img class="playgif" data-swap="Thumbnails?img='.upload_image($res["id"]).'&data='.$res["post"].'" src="Thumbnails?img='.upload_image($res["id"]).'&thumbs=1&data='.$res["post"].'" alt="" width="100%" height="100%">
                                            </a>
                                        </div>
                                    </div>
                                </div>';
// // // // // // audio     

                        $type[2]='<div idchat='.$res["id"].' id="chat"><div class="message__img">
                                                <img class="resize--img" src="'.date_image(''.$res["userID"].'').'" alt="" data-toggle="modal" data-target="#view-modal-user" data-id="'.$res["userID"].'" id="getUser">
                                            <div class="wall_chat_body_image">
                                                <p class="message__text"><spam class="message__username" data-toggle="modal" data-target="#view-modal-user" data-id="'.$res["userID"].'" id="getUser">'.date_name_user(''.$res["userID"].'').'</spam><spam class="message__username_time">'.time_elapsed($res["time"]).'</spam></p>
                                            </div>
                                          </div>
                                <div class="message__chat m--user">
                                    <p class="message__text t--user">
                                    <a data-toggle="modal" data-target="#view-modal-media" data-id="'.$res["id"].'" id="getMedia">
                                    <img src="img/tool.png" alt="" width="100%" height="100%">
                                    </a>
                                    </p>
                                </div>';    



////** Here are the chat messages   
                echo $type[$tipo];
////** This is the function for external links                  
                echo ''.External_links($res["link"]).''; 

            }
        }
} 

0 个答案:

没有答案