【发布时间】:2014-04-18 07:02:07
【问题描述】:
我使用(Ajax、jquery、PHP、mysql)设计了一个聊天室
但是当有人向另一个人发送消息时,消息会重复 4-5 次,
我正在使用这段代码(jquery)
<script type="text/javascript">
$(document).ready(function() {
var interval = setInterval(function() {
$.ajax({
url: 'getChatting/182/212',
success: function(data) {
$('#messages').prepend(data);
}
});
}, 1000); // ervery 1 second the message box refresh to loading new message
});
</script>
// php代码laravel
public function getChatting($from_id , $to_id){
$ListChat = DB::table('cht_messages')
->where('user_from_id',$to_id)
->where('user_to_id',Auth::user()->id_user)
->where('readit_message',0)
->join('main_users','main_users.id_user','=','cht_messages.user_from_id')
->select('cht_messages.content_message','cht_messages.id_message' , 'main_users.display_name_user')
->orderby('cht_messages.created_at')
->get();
DB::table('cht_messages')
->where('user_from_id',$to_id)
->where('user_to_id',Auth::user()->id_user)
->update(array('readit_message'=>1));
$messages = '';
if(Count($ListChat) > 0):
foreach($ListChat as $message) {
$messages .= '<span id="cht_auther" style="color:red;">'.$message->display_name_user.'</span>
<span id="cht_date">01-01-2014</span>
<span id="cht_spr"> : </span>
<span id="cht_cnt">'.$message->content_message.'</span>
<br clear="both"/>
';
}
endif;
return $messages;
}
但它会重复超过 6 或 7 条消息,而 php 代码将采用最后一条未读取的消息...
对不起我的英语不好
谢谢
【问题讨论】:
-
也分享 php (getChatting) 页面和所需的 HTML
-
将
console.log(data)添加到success函数的开头,以验证PHP 没有返回重复消息。或者在您的开发工具中检查网络。 -
至少您应该检查消息是否已加载到聊天中。请出示您的 php 代码。
标签: javascript php jquery ajax laravel