Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面加载时运行ajax,然后每5秒运行一次_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 在页面加载时运行ajax,然后每5秒运行一次

Javascript 在页面加载时运行ajax,然后每5秒运行一次,javascript,jquery,ajax,Javascript,Jquery,Ajax,我仍然发现很难掌握一些javascript/jquery概念 我想找到一种在页面加载时加载ajax的方法,然后每隔10秒加载一次。我偶然发现了一个好主意,因为它提供了一些错误检测以在ajax失败时停止脚本运行,唯一的问题是在页面加载时,它必须等待5秒才能请求数据,我希望它每10秒请求一次数据,以及在页面加载时,所以我不必等待10秒才能看到任何内容 我如何让它在页面加载时加载,以及之后每隔10秒加载一次 我尝试添加以下内容: if(this.success_count&&th

我仍然发现很难掌握一些javascript/jquery概念

我想找到一种在页面加载时加载ajax的方法,然后每隔10秒加载一次。我偶然发现了一个好主意,因为它提供了一些错误检测以在ajax失败时停止脚本运行,唯一的问题是在页面加载时,它必须等待5秒才能请求数据,我希望它每10秒请求一次数据,以及在页面加载时,所以我不必等待10秒才能看到任何内容

我如何让它在页面加载时加载,以及之后每隔10秒加载一次

我尝试添加以下内容:

   if(this.success_count&&this.failed == 0)
    {
        jQuery.proxy(this.getData, this)
    }else{
        setTimeout(
           jQuery.proxy(this.getData, this),
           this.interval
        );
    }
为此:

    var poller = {

        failed: 0,
        success_count: 0,

        interval: 10000,

        init: function(){

           if(this.success_count&&this.failed == 0)
            {
                jQuery.proxy(this.getData, this)
            }else{
                setTimeout(
                   jQuery.proxy(this.getData, this),
                   this.interval
                );
            }
         },

       getData: function(){
           var self = this;

           jQuery.ajax({
               url        : "foo.htm",
               success    : jQuery.proxy(self.successHandler, self),
               error    : jQuery.proxy(self.errorHandler, self)
           });
       },

        // => Handle Success
        successHandler : function( response ){

              if( response === "failure" ){
                  this.errorHandler();
              } else {
                ++this.success_count;
                  this.init();
              }
          },

       errorHandler: function(){
           if( ++this.failed < 5 ){
              this.interval += 1000;
              this.init();
           }
       }
    };

poller.init();

使用jquery将其放在一个文档就绪函数中,在页面加载开始时启动它,然后还有一个setTimeout函数,该函数每10秒调用一次ajax调用。请参见下面的示例

  $(document).ready(function() {
        ajaxFunctionCall();
        setTimeout( ajaxFunctionCall, 10000 );
   });

在加载时调用函数,清除它并在函数中添加settimeout

var tr=null; $function{ tr=setTimeoutfunction{timerFunction;},100; }; 函数时间函数{ 限时器; //成功后插入以下内容 tr=setTimeoutfunction{timerFunction;},10000; }
Init应该是第一个,我想为什么不在启动setTimeout之前在Init中调用getData呢?Antoine,我尝试添加getData,this.getData;在超时之前的一开始,它仍然不起作用。您能解释一下init函数中if语句的意义吗?还有,它怎么不起作用?你收到错误消息了吗?您在哪里尝试调用getData?嗨,Keith,这是我最初考虑的方式,但在阅读了该链接后,您提供的代码显然意味着如果加载ajax时出现错误,上面的代码将忽略它,并继续尝试加载死页。链接上的代码意味着您可以停止处理错误并显示自定义失败消息。这是我的理解,我没有误解
  $(document).ready(function() {
        ajaxFunctionCall();
        setTimeout( ajaxFunctionCall, 10000 );
   });