我创建了一个私人聊天系统,一切正常,但我有一个问题,默认情况下聊天框不可见,所以一旦用户点击一个名字聊天,我就会使用jquery来显示聊天。
我想要的是如果我向另一个人发送一个消息,它应该自动将聊天框状态从hide改为show,lemme显示我的代码
$('#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将数据发送到服务器然后它会将msg附加到发送者的屏幕现在问题是虽然聊天已被发送,接收者不确定因为他的聊天框是隐藏的所以他必须点击我的名字才能看到是否有聊天。
谢谢
答案 0 :(得分:1)
在您长时间轮询服务器之前,您无法执行此操作。
您可以每五秒发送一次ajax请求(甚至StackOverflow聊天),以便轮询最新数据
setInterval(function(){
poll();
}, 5000);
答案 1 :(得分:0)
考虑重写代码。
jQuery已经集成了函数调用($ .post,$。获取$ .ajax的快捷方式),它已经可以为用户的浏览器使用适当的XMLHttpRequest,无需手动完成,这就是库是为了。
其次,创世答案就是你问题的答案。