您似乎想要做的并不是真正的事件之类的事情。下面显示了您需要实现的总体思路:
function repeatedRefresh(delay) {
// Ajax code goes here
setTimeout(repeatedRefresh, 2000);
}
setTimeout(repeatedRefresh, 2000);
这声明了一个repeatedRefresh()
函数并在 2000 毫秒后调用它。该函数本身将执行 Ajax 调用以更新页面,然后setTimeout()
在 2000 毫秒后将另一个调用排队。我建议将setTimeout()
Ajax 完成/成功回调放在内部,以便后续调用在前一个完成后 2000 毫秒发生。
我已经把实际的 Ajax 代码放在上面了,因为我不熟悉 YUI(除了非常一般的方式),但是由于你已经用 jQuery 标记了你的问题,这是用 jQuery 完成的一种方法:
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();