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