使用jQuery在新聊天之前添加旧聊天到div

时间:2015-02-17 07:48:22

标签: php jquery ajax function codeigniter

在我使用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。有人可以建议一种解决问题的方法吗?

1 个答案:

答案 0 :(得分:0)

最后我找到了解决问题的方法。

  1. 我添加了一个范围<span id='old_chat_appended' hidden=""></span>
  2. 通过将span的值更改为0和1来稍微修改get_old_chat函数。 e.preventDefault()后,添加

    $('#old_chat_appended').text('0')

    在使用$('#chat_window').append(data)向div添加数据后,添加了

    $('#old_chat_appended').text('1')

  3. 最后在get_chat函数中,每1秒运行一次,添加

    if($('#old_chat_appended').text() == 1) { $('#chat_window').append(data); }

  4. 该应用程序正在按预期工作。在新的聊天记录之前,旧聊天会被附加到div。