ajax的不可能响应
Posted
技术标签:
【中文标题】ajax的不可能响应【英文标题】:Impossible response of ajax 【发布时间】:2013-12-01 16:03:08 【问题描述】:我正在使用 AJAX、php 和 mysql 开发一个网络聊天网站。
但是我遇到了一个问题,有一个功能可以检查与您聊天的人是否仍在聊天(在线)或他/她已放弃聊天。 函数如下所示:
//some variables here
var somedata="....";
var userleftchatmsg="he/she left you,you are alone now.";
function checkifuseronline()
$.ajax(
type: "GET",
url: "check.php",
dataType: "json",
data:somedata
).done(function(r)
if (r.o1==2)
$("#chattable").prepend(userleftchatmsg);
else
checkifuseronline();
);
问题是“他/她离开了..”消息有时会出现两次,尤其是当用户同时与多个伙伴聊天时。 这不应该是不可能的还是我错了?
【问题讨论】:
什么是r
?也许更新不够快?
您将消息添加到 #chattable
元素,所以我不明白为什么它不能显示两次。如果您拨打checkifuseronline
两次并获得r.o1 == 2
两次,您将看到两次消息。
也许如果你使用 setTimeout 函数再次调用 checkifuseronline 就像setTimeout('checkifuseronline()', 1000);
你什么时候调用 checkifuseronline()
这个函数会每秒用http调用轰炸你的服务器,直到用户离开?
【参考方案1】:
您可能不喜欢这个答案,但请查看 XMPP。它旨在解决此问题,以及您尚未遇到的所有其他问题。 http://xmpp.org/about-xmpp/
另外,更直接的方法是使用 NodeJS 服务器来执行此操作: http://net.tutsplus.com/tutorials/javascript-ajax/real-time-chat-with-nodejs-socket-io-and-expressjs/
糟糕的答案是 PHP 不能做你想做的事。这是我一直使用的一种很棒的语言,但你不能从这里到达那里。
祝你好运!
【讨论】:
以上是关于ajax的不可能响应的主要内容,如果未能解决你的问题,请参考以下文章