2011-09-08 66 views
1

我创建了一个私人聊天系统一切正常,但我有一个问题聊天框默认情况下是不可见的,所以一旦用户点击聊天名称,我正在使用jQuery来显示chatbo。jquery更新所有浏览器

我想要的是,如果我一个MSG发送给其他人就应该自动隐藏,显示更改聊天框状态,还是让我来告诉你我的代码

$('#send_now').live("keypress", function(e){ 
    me = $(this);  
    if(e.which == 13) 
    { 
     getData(); 
    } 
}); 

function getData(){ 
     var send_to = $(me).parent('#textareaPanel').children('#submit_send_to').val(); 
     var sender = $(me).parent('#textareaPanel').children('#submit_sender').val(); 
     var send_msg = $(me).val(); 

     var flick = '<div class="singleMsg"><p id="msgTop"><span class="name"><img src="images/avatar.png" width="15" height="15" alt="avatar" /> '+ sender +' said ---</span><span class="time"></span></p><p id="msgData">' + send_msg + '</p></div>'; 

     $('.' + sender).closest('#forclick').show(); 

     if(window.XMLHttpRequest) 
     { 
      xmlhttp = new window.XMLHttpRequest(); 
     } 
     else 
     { 
      xmlhttp = new ActiveXObject('Microsoft.XMLHTTP'); 
     } 

     xmlhttp.onreadystatechange = function() { 
     if(xmlhttp.readyState == '4' && xmlhttp.status == '200') 
     { 

      response = xmlhttp.responseText; 
      $(me).closest('#allMsgs').children('#fake').append(flick); 
      $(me).val(''); 
     } 
    } 


    var send_msg = $(me).val(); 

    parameters = 'sender=' + sender + '&send_to=' + send_to + '&send_msg=' + send_msg; 

    xmlhttp.open('POST', 'scripts/chat-submit.php', true); 
    xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
    xmlhttp.send(parameters); 
    } 

我在做什么是一个人一旦点击输入它会发送数据到服务器使用Ajax,然后它会将该味精附加到发件人的屏幕现在的问题是,虽然聊天已发送,接收器不确定,因为他的聊天箱是隐藏的,所以他将不得不点击我的名字看到有没有聊天或没有。

感谢

回答

1

你不能这样做,直到你长查询服务器。

您可以发送Ajax请求每五秒钟(甚至StackOverflow上聊天呢吧)轮询最新的数据

setInterval(function(){ 
    poll(); 
}, 5000); 
+0

我这样做是为了抓住不同功能的聊天记录,并且该功能正在为所有登录用户获取数据,因此在这种情况下,尽管我不向任何人发送聊天消息,但它会使所有聊天框可见。 – Henry

0

考虑重写代码。

jQuery已经集成了函数调用($。post,$。获得快捷方式到$ .ajax),它已经可以为用户的浏览器使用合适的XMLHttpRequest,无需手动完成,这就是图书馆是为了。其次,起源答案是你的问题的答案。

+0

我在做什么,让我看看,如果我有3个用户在线,所以民意调查的功能将获得所有3这些每10秒的数据,如果我试图显示聊天盒div在那个时候,它会让所有人都可见无需任何理由 – Henry

+0

使用每个用户唯一的会话,并将会话标识符作为轮询代码的参数。 – Artis