用js怎么判断连续三秒得不到数据  fuction CountdownDataBind(id,type,data)
{
  $.p("a.aspx",{id:id,data:data},fuction(xml){
      var result=xml;
       if(result!="") 
       {
          $("#aa").html("dfsdfsf");
       }
      else
      {        $("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出
      }   })
} 整个函数每秒都在执行

解决方案 »

  1.   

    试试这样:fuction CountdownDataBind(id,type,data)
    {
      $.p("a.aspx",{id:id,data:data},callback)
    }callback = fuction(xml){
          var result=xml;
           if(result!="") 
           {
              $("#aa").html("dfsdfsf");
           }
          else
          {        $("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出
          }
        setTimeout(callback,1000);
       }
      

  2.   

    额,不是,应该是发送请求的时候setTimeout,每秒发送一次请求,外面一个全局变量存储发送次数,累积大于3就不发送了
      

  3.   

    setInterval(CountdownDataBind(id,type,data),3000):
      

  4.   

    那不行吧,有时延迟只有1或2秒钟,在这种情况不需要 $("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出
      

  5.   

    设置一个标志位fThree,在回调函数中修改,当得到数据时将fThree置0,取不到数据时fThree加1并判断fThree是不是为3,是则说明连续三秒没有取到数据。var fThree=0;
      fuction CountdownDataBind(id,type,data)
    {
      $.p("a.aspx",{id:id,data:data},fuction(xml){
          var result=xml;
           if(result!="") 
           {
              fThree=0;
              $("#aa").html("dfsdfsf");
           }
          else
          {
             fThree++;
             if(fThree==3)
                 $("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出
          }   })
    }
      

  6.   

    你这个不应该用每秒执行的方式,因为你不知道流程什么时候完成,而且下一次执行时上一个流程可能还没完成,再一次的请求可能会加剧网络和服务器的负担
    用递归比较好,规定次数而不是时间 fuction CountdownDataBind(id,type,data,num)//num为请求的最大次数
    {
      if(num==0)
      {
        $("#aa").html("由于网络不稳定,暂时得不到数据")//num次请求都没有结果就结束递归,输出失败
        return;
      }
      num--;
      $.p("a.aspx",{id:id,data:data},fuction(xml){
          var result=xml;
           if(result!="") 
           {
              $("#aa").html("dfsdfsf");
              return;//一旦成功即结束递归,避免浪费时间及资源
           }
          else
          {
            CountdownDataBind(id,type,data,num-1);
          }   })
    }
      

  7.   

    fuction CountdownDataBind(id,type,data)
    {
      if(!arguments.callee.n){arguments.callee.n = 0}
      $.p("a.aspx",{id:id,data:data},fuction(xml){
          arguments.callee.n++
          var result=xml;
           if(result!="") 
           {
              $("#aa").html("dfsdfsf");
           }
          else
          {
            if(arguments.callee.n%3 === 0){
            $("#aa").html("由于网络不稳定,暂时得不到数据")//3秒到不到数据后输出
            }
          }   })
    }
      

  8.   

    $.ajax还有个timeout的涵数啊,你设置为3000,
    $.ajax({
    success:function(){},
    timeout:function(){alert('3秒时间到');}
    });