Frage

Ich habe eine CometServlet nach diesem Beispiel http: //tomcat.apache .org / tomcat-7.0-doc / aio.html . Dann habe ich versucht, Daten von ihm zu bekommen, mit JQuery. Der Code ist folgende:

$(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);
    });
});

Das Problem ist, dass die Erfolgsfunktion nicht Auslöser (obwohl ich in der Firebug-Konsole sehen kann, dass die Daten kommen). Ich denke, es geschieht, weil der Server nicht in der Nähe einer Antwort Schriftsteller tut, aber es ist ein Ziel des Lang Polling:)

Hat jemand irgendwelche Ideen, wie es gelöst werden kann?

War es hilfreich?

Lösung 2

Die Problemlösung ist Timer hinzuzufügen, um den langfris Umfrage Strom für ein neue Daten zu prüfen. Große Erklärung ist hier: http: / /www.bennadel.com/blog/1976-Long-Polling-Experiment-With-jQuery-And-ColdFusion.htm

Danke an alle.

Andere Tipps

Sie müssen die xhr onreadystatechange um readyState === 3 mit jQuery .ajax() zu überprüfen, zu überschreiben. Beispiel:

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

xhr.onreadystatechange = function() {
     xhr._onreadystatechange();         // execute original handler
     if (xhr.readyState === 3) alert('Interactive');
};
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top