иметь несколько ответов AJAX для одного запроса - PullRequest
1 голос
/ 05 декабря 2011

У меня проблемы с ответами ajax.Все работает хорошо, но у меня странное поведение.Я делаю чат на основе ajax.Итак, я использую ajax-запросы-ответы, чтобы все работало.Он работает нормально, хотя с тех пор, как я начал использовать 2 функции опроса, иногда ответы получаются несколько раз.В частности: я отправляю 1 пакет ajax для опроса сообщений и 1 пакет ajax для опроса пользователей.Оба они отправляются периодически!Кроме того, они отправляются с одинаковой частотой примерно в одно и то же время.Иногда у них возникает проблема: на запрос отправляется несколько ответов.У всех пакетов есть временная метка, и они регистрируются на стороне сервера.На сервер пакет попал только один раз (я уверен, что на основе регистрации и использования нескольких браузеров одновременно).Браузер делает ответ примерно 3-4 раза.Все сообщения абсолютно одинаковые, с одинаковой отметкой времени.Это обычно происходит, когда браузер сильно загружен.Я пытался отключить кеш в шапке, но это тоже не помогает.Пожалуйста, помогите с любой информацией или идеей о проблеме.

1 Ответ

1 голос
/ 05 декабря 2011

Зачем использовать два запроса?Объедините их в одно "что-нибудь новое для меня?"введите и отправьте оба ответа одновременно.Вы можете встроить произвольные структуры данных в ответ 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']);
         }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...