每隔x秒自动刷新div并停止成功加载

时间:2014-09-26 12:12:40

标签: javascript php jquery html

我需要创建一个每10秒自动刷新的div,并在成功加载时停止。我创建了这个jQuery脚本:

<script type="text/javascript">
$(document).ready(function(){
   var j = jQuery.noConflict();
    j(document).ready(function()
    {
        j(".refresh").everyTime(1000,function(i){
            j.ajax({
              url: "pin.php",
              cache: false,
              success: function(html){
                j(".refresh").html(html);
              }
            })
        })
    });
   j('.refresh');
});
</script>

它可以工作,但刷新每10秒继续一次。如果pin.php返回数字输出,我需要它停止。

如果pin.php返回数字输出,如何编辑它以停止刷新?

5 个答案:

答案 0 :(得分:0)

http://www.jquery-plugins.info/jquery-timers-00013992.htm处的文档中,您需要的功能可能是stopTime。虽然我没有对其进行测试,但success中的以下内容应该有效:

success: function(html) {
        if (j.isNumeric(html)) {
            j(".refresh").stopTime();
        } else {
            j(".refresh").html(html);
        }
    }

答案 1 :(得分:0)

你说,“如果pin.php返回数字输出,我需要它停止”。 如果.refresh html包含数字而不是停止调用ajax调用,否则它会调用。

if(isNaN(j(".refresh").html()){

    //put your ajax call in this block

}

答案 2 :(得分:0)

您可以像这样修改代码:

 var temp =   setInterval(1000,function(i){
            j.ajax({
              url: "pin.php",
              cache: false,
              success: function(html){
               if(isNaN(html))
                j(".refresh").html(html);
              }else{temp.clearInterval();}
            })
    })

答案 3 :(得分:0)

以这样的间隔尝试它,直到加载的调用完成然后它停止间隔和ajaxcal

$(document).ready(function(){
var j = jQuery.noConflict();
jRefresh();
var jRefresh = setInterval(function(){
        ajaxCall()
}, 1000);

function ajaxCall() {
    j.ajax({
        url: "pin.php",
        cache: false,
        success: function(html){
            if (j.isNumeric(html)) {
                    myStopFunction();
            }
        }
    })
}

function myStopFunction() {
        clearInterval(jRefresh);
}
});

答案 4 :(得分:0)

首先,您不需要两次致电$(document).ready()。为避免冲突,您可以编写如下代码:

jQuery(document).ready(function($){
  // Your code here
});

请注意$参数

其次,我想每次使用都是无用的(看起来像是一个插件,加载大量代码并不是一个好主意,因为你有很好的替代方案,因为你可以简单地调用setInterval ;

根据您的需求并遵循我上面所说的,代码应如下所示:

jQuery(document).ready(function($){

  var interval_time = 10000;
  var interval = null;

  var $wrapper = $('.refresh');

  interval = setInterval(function(){
    $.ajax({
      url : 'pin.php',
      cache : false,
      success : function( html ){
        if( $.isNumeric( html ) ){
          clearInterval( interval );
        }

        $wrapper.html( html );
      }
    })
  }, interval_time);


});