Tomcatサーバ上のjQueryを使って、長いポーリング通報
-
25-09-2019 - |
質問
私はこの例に係る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する
みんなありがとうます。
他のヒント
あなたは、jQueryのxhr onreadystatechange
とreadyState === 3
をチェックするために.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');
};
所属していません StackOverflow