对一个请求有多个ajax响应

时间:2011-12-05 01:07:01

标签: php ajax response

我对ajax响应有一些问题。一切都运转正常,但我有一些奇怪的行为。 我正在进行基于ajax的聊天。所以,我使用ajax请求 - 响应来使这些东西工作。它工作正常,虽然自从我开始使用2个轮询功能以来,有时会多次检索响应。 具体来说:我发送1个ajax包用于消息轮询,1个ajax包用于用户列表轮询。它们都是定期发送的!此外,它们在大约相同的时间内以相同的频率发送。 有时它们会出现问题:对于请求,会发回多个响应。所有包都有一个时间戳,它们在服务器端登录。在服务器上,软件包只进入一次(我确信基于日志记录,同时使用多个浏览器)。浏览器的响应大约3-4次。所有消息都完全相同,具有相同的时间戳。这通常发生在浏览器负载很重的情况下。 我试图在标题中禁用缓存,但它也没有帮助。 请帮助解决有关问题的任何信息或想法。

1 个答案:

答案 0 :(得分:1)

为什么要使用两个请求?将它们组合成一个“对我来说什么新东西?”输入,并同时发送回两个响应。您可以将任意数据结构嵌入到JSON响应中,因此可以很容易地执行以下操作:

$data = array(
   'user_query' => array(
        'status' => false   // nothing new
   ),
   'mesage_query' => array(
        'status' => true // got some new messages
        'messages' => array (
            0 => array(... new message #1 data ...),
            1 => array(... new message #2 data ...)
            etc...
        )
   )
);
echo json_encode($data)

然后在你的客户端脚本中,在ajax响应处理程序中(假设jquery):

$.ajax(blah blah blah
    ....
    success: function(data) {
         if (data['messages'].status) {
              show_new_messages(data['messages']);
         }
         if (data['user_query'].status) {
              show_new_users(data['user_query']);
         }
    }
});