Я пытаюсь создать чат-систему. Проблема в том, что один пользователь вводит сообщение другому, окно чата не будет отображаться мгновенно с этим сообщением получателю. Только после того, как ресивер освежает окно, все работает нормально. Вот мой текущий код:Показать окно чата при получении нового сообщения
profile.php
setInterval(function(){
var username="<?php echo $username; ?>";
$.ajax({
url:"s/shower.php",
type:"POST",
data:"shower=" + username,
success:function(data){
if (data == 1){
$(".pchat").show();
}
}
});
},500);
$(".chat_wind").click(function(){
var id=$(this).attr("id");
var newid=id.split("chat_wind");
var datid=newid[1];
$(".pchat").show();
});
$(".chatform").submit(function(){
var parent=$(this).attr("id");
var split=parent.split("chatform");
var newid=split[1];
var val=$("#chati").val();
if (val.length == 0){
return false;
}
$.ajax({
url:"s/log.php",
type:"post",
data:"newid=" + newid + "&txt=" + val,
success:function(data){
setInterval(function(){
$.ajax({
url:"s/chat.php",
type:"post",
data:"username=" + newid,
success:function(w){
var objDiv = document.getElementById("cbody");
objDiv.scrollTop = objDiv.scrollHeight;
$("#cbody").html(w);
}
});
},500);
}
});
$("#chati").val("");
return false;
});
chat.php
<?php
include "db.php";
include "timeago.php";
if (isset($_POST['username'])){
$username=$_POST['username'];
$dat='';
$sql=mysql_query("SELECT * FROM chat where uchated='$username' ORDER BY time asc");
while($row=mysql_fetch_array($sql)){
$time=$row['time'];
$txt=$row['text'];
$dat.="
<div id='msg'>
$txt <div id='ctime'></div>
</div>";
}
echo $dat;
}
?>
shower.php
<?php
include "db.php";
if (isset($_POST['shower'])){
$shower=$_POST['shower'];
$sqlara=mysql_query("SELECT * FROM chat where uchated='$shower'");
$numara=mysql_num_rows($sqlara);
if ($numara == 0){
echo "0";
}else{
echo "1";
}
}
?>
Использование $ ("# cbody") добавить (ш); вместо $ ("# cbody"). html (w); – Jagadeesh