Jquery 是的,每两秒钟一次
我想用YUI创建一个事件,每两秒钟刷新一次页面Jquery 是的,每两秒钟一次,jquery,yui,Jquery,Yui,我想用YUI创建一个事件,每两秒钟刷新一次页面 var companymain = { init: function() { companymain.form = document.getElementById('companymain'); //I need a event or something and repet this function. YAHOO.util.Event.addListener(companymain.form, 'EVENTNEED', company
var companymain = {
init: function() {
companymain.form = document.getElementById('companymain');
//I need a event or something and repet this function.
YAHOO.util.Event.addListener(companymain.form, 'EVENTNEED', companymain.submit_func);},
submit_func: function(e) { //stuff refresh page}
想法?
问候。你似乎想做的事情其实不是什么大事。下面显示了您需要实施的总体思路:
function repeatedRefresh(delay) {
// Ajax code goes here
setTimeout(repeatedRefresh, 2000);
}
setTimeout(repeatedRefresh, 2000);
这声明了一个repeatedRefresh()
函数,并在2000ms后调用它。函数本身将执行一个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,您可以通过使用将返回的HTML自动加载到特定元素(例如div)来简化操作:
最后,尝试使用现有的公司主结构:
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();
当然setTimeout没有问题,但是YUI 2稍后会有YAHOO.lang(http://developer.yahoo.com/yui/docs/YAHOO.lang.html#method_later)YUI 3拥有YUI(http://yuilibrary.com/yui/docs/api/classes/YUI.html#method_later)两者都可以选择定期调用函数,而不是一次(因此无需在代码中定义两次硬编码延迟;)我怀疑您想要setTimeout()
-对其进行搜索,您将得到一个解决方案:)
。问题是,我可以处理函数、回调和错误。我不知道是否可以使用setTimeout。呃,好吧。。。试试看:)
(让您的读者轻松一点,随身携带一个JSFIDLE!)您能详细介绍一下“创建事件”的含义吗?因为如果你想每两秒钟发生一件事情,那不是真正的事件,而是setTimeout()
或setInterval()
的事情。当你说“刷新页面”时,你的意思是“通过Ajax更新部分页面”还是“完全重新加载整个页面”(因为后者也会重新启动JS)?是的。通过Ajax更新部分内容。使用setTimeout()。怎么样?t=设置超时(“提交函数()”,1000);不行,谢谢。我将“YAHOO.util.Event.addListener”改为setTimeout(companymain.submit_func,2000)。因为我看到你没有活动时间,你的回答很好。
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();