ajax的不可能响应

Posted

技术标签:

【中文标题】ajax的不可能响应【英文标题】:Impossible response of ajax 【发布时间】:2013-12-01 16:03:08 【问题描述】:

我正在使用 AJAX、phpmysql 开发一个网络聊天网站。

但是我遇到了一个问题,有一个功能可以检查与您聊天的人是否仍在聊天(在线)或他/她已放弃聊天。 函数如下所示:

//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的不可能响应的主要内容,如果未能解决你的问题,请参考以下文章

Ajax异步数据抓取

python--Ajax

使用 jQuery 从 AJAX 响应(json)构建表行

用Ajax爬取今日头条图片

用Ajax爬取今日头条图片集

AJAX 响应失败