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"]).'';
}
}
}