Вопрос

Я создал Cometservlet по этому примеру http://tomcat.apache.org/tomcat-7.0-doc/aio.html.. Отказ Затем я пытался получить данные из него с помощью jQuery. Код следующий:

$(function() {

        $.longPoll = function(url, success, error) {
        $.ajax({
            url : url,
            success: function(data, status) {
                $.longPoll(url, success, error);
                if (success) {
                    success(data, status);
                }
            },
            error: function(data, status) {
                $.longPoll(url, success, error);
                if (error) {
                    error(data, status);
                }
            }
        });

    };

    $.longPoll("./comet", "", function(data, status) {
        alert("success:" + data);
    }, function(data, status) {
        alert("error:" + data);
    });
});

Проблема в том, что функция успеха не запускает (даже если я могу видеть в консоли Firebug, что приходит данные). Я думаю, что это произойдет, потому что сервер не закрывает писатель отклика, но это цель в длительном опросе :)

У кого-нибудь есть какие-либо идеи, как это можно решить?

Это было полезно?

Решение 2

Решение проблемы состоит в том, чтобы добавить таймер для проверки потока длительного опроса для новых данных. Отличное объяснение здесь: http://www.bennadel.com/blog/1976-long-polling-experiment-with-jquery-and-coldfusion.htm.

Всем спасибо.

Другие советы

Вам нужно перезаписать xhr onreadystatechange Для того, чтобы проверить на readyState === 3 с jQuery .ajax(). Отказ Пример:

var xhr = $.ajax({});
xhr._onreadystatechange = xhr.onreadystatechange;  // save original handler

xhr.onreadystatechange = function() {
     xhr._onreadystatechange();         // execute original handler
     if (xhr.readyState === 3) alert('Interactive');
};
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top