あなたがやりたいと思われることは、実際にはイベントのようなものではありません。以下に、実装する必要のある一般的な考え方を示します。
function repeatedRefresh(delay) {
// Ajax code goes here
setTimeout(repeatedRefresh, 2000);
}
setTimeout(repeatedRefresh, 2000);
これはrepeatedRefresh()
関数を宣言し、2000ms後にそれを呼び出します。関数自体はAjax呼び出しを実行してページを更新し、setTimeout()
2000ms後にそれ自体への別の呼び出しをキューに入れるために使用します。setTimeout()
前の呼び出しが完了してから2000ミリ秒後に後続の呼び出しが発生するように、Ajax完了/成功コールバックの内部に配置することをお勧めします。
私はYUIに精通していないため(非常に一般的な方法を除いて)、実際のAjaxコードを上に残しましたが、質問にjQueryのタグを付けているので、これはjQueryでそれを行う1つの方法です。
function repeatedRefresh(delay) {
$.ajax({
url : "yourURLhere",
data : "optionalDataHere",
// other ajax params here as needed,
success : function(result) {
// do something with result (display it on your page somehow),
// then queue up the next refresh
setTimeout(repeatedRefresh, 2000);
}
});
}
setTimeout(repeatedRefresh, 2000);
または、サーバー側のコードがHTMLを返す場合は、.load()
メソッドを使用して、返されたHTMLを特定の要素(divなど)に自動的にロードすることで、処理を簡略化できます。
function repeatedRefresh() {
$('#elementToUpdate').load('yourURLhere', function() {
setTimeout(repeatedRefresh, 2000);
});
}
setTimeout(repeatedRefresh, 2000);
最後に、既存のcompanymain
構造を使用しようとすると、次のようになります。
var companymain = {
init: function() {
setTimeout(companymain.submit_func, 2000);
},
submit_func : function() {
// YUI or jQuery (or other) Ajax code here
setTimeout(companymain.submit_func, 2000);
}
};
companymain.init();