在我使用Codeigniter,jQuery,AJAX的在线聊天项目中,我有一个函数,每1秒运行一次,用于检索已交付状态= 0的聊天
$.post("<?php echo base_url(); ?>chat/admin_chat/get_chat",
{
user_id : $('.hide_me').text(),
username : $('.username').text()
},
function(data){
if (data != "") {
$('#chat_window').append(data);
$('#chat_window').scrollTop($('#chat_window').prop("scrollHeight"));
}
}
);
还有另一个函数用于获取已交付状态= 1 (或旧聊天)的聊天,
$(document).on('click','.user',function (e) {
e.preventDefault();
$('.username').html($(this).text());
$('.hide_me').html($(this).attr('id'));
$('.username').show();
$('.log_username').hide();
$("#input").removeAttr("readonly");
var user = $(this).attr('id');
$("#chat_window").html('');
$.post("<?php echo base_url(); ?>chat/admin_chat/get_old_chat",
{
user_id : $('.hide_me').text(),
username : $('.username').text()
},
function(data){
$('#chat_window').append(data);
$('#chat_window').scrollTop($('#chat_window').prop("scrollHeight"));
}
);
});
在点击用户名时称为。两个AJAX调用的结果都附加到div。我现在遇到的问题有时是当我点击用户名时,未交付的聊天会在旧聊天 之前附加到div上,这不是我想要的 。当点击用户名时,我需要在新聊天之前将旧聊天附加到div。有人可以建议一种解决问题的方法吗?
答案 0 :(得分:0)
最后我找到了解决问题的方法。
<span id='old_chat_appended' hidden=""></span>
。通过将span的值更改为0和1来稍微修改get_old_chat
函数。
e.preventDefault()
后,添加
$('#old_chat_appended').text('0')
在使用$('#chat_window').append(data)
向div添加数据后,添加了
$('#old_chat_appended').text('1')
。
最后在get_chat
函数中,每1秒运行一次,添加
if($('#old_chat_appended').text() == 1)
{
$('#chat_window').append(data);
}
该应用程序正在按预期工作。在新的聊天记录之前,旧聊天会被附加到div。