A
A
Aizharik2015-11-05 04:21:06
JavaScript
Aizharik, 2015-11-05 04:21:06

Long polling request blocking other ajax requests?

Привет!
Решил поиграться с Long Polling, есть две функции с AJAXом одна long pollin вторая отправка формы, после того как запускается вторая для отправки формы. Сайт перестает отвечать и виснет. На сколько я понимаю, браузер не дает выполнится второму запросу до того как завершится первый. Но так как первый это Long poling запрос, то браузер переходит в состоянии вечного ожтдания не давая перейти даже на другую страницу.

(function poll(timestamp){
        var dialogueId = 1;
        var queryString = {
            'timestamp' : timestamp,
            'user_id' : 1
        };
        $.ajax({
            url: '/exemple/getMessages/' + dialogueId,
            success: function(data){
                if(data.type === "ERROR")
                {
                    alert(data.message);
                }
                else if(data.type === "SUCCESS")
                {
                    alert(data.message);
                }
        },
            async: true,
            dataType: "json",
            complete: poll,
            timeout: 30000
        });
    })();

    function call() {
        $('#messagebox').attr('disabled');
        var msg   = $('#sendMessage').serialize();
        $.ajax({
            type: 'POST',
            url: '/exemple/sendmessage',
            data: msg,
            success: function(data) {
                $('#messagebox').val('');
                $('#messagebox').removeAttr('disabled');
                alert('сообщение отправленно! OK')
            },
            error:  function(xhr, str){
                alert('Возникла ошибка: ' + xhr.responseCode);
            }
        });

    }

Понятия не имею как это исправить, кто в курсе в чем дело?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Stalker_RED, 2015-11-05
@aizhar777

Если на сервере php, и используется сессия, то возможно, что запрос блокируется из-за нее. Попробуйте принудительно вызвать session_commit().

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question