Jquery 是的,每两秒钟一次

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

我想用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', 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();