2014-09-26 171 views
1

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

<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返回数字输出?

回答

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); 
     } 
    } 
0

你说,“我需要它停止,如果pin.php返回一个数字输出”。 如果.refresh html包含的数字比停止调用ajax调用,否则它会打电话。

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

    //put your ajax call in this block 

} 
+5

请加上周围为什么这个问题解决了一些解释。 – 2014-09-26 13:02:47

+0

http://privtool.com/timer_html/index.html – kingcope 2014-09-27 09:57:46

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();} 
      }) 
    }) 
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); 
} 
}); 
+0

不工作..是停止,白衣出更改div文本 – kingcope 2014-09-27 09:31:53

+0

http://privtool.com/timer_html/index.html – kingcope 2014-09-27 09:58:03

0

首先您不需要拨打$(document).ready()两次。要aviod冲突,你可以这样写代码:

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); 


}); 
+0

不工作,不改变数据div刷新 – kingcope 2014-09-27 09:25:57

+0

你能给我一个直接链接到你的pin.php吗?尝试用$('。refresh')替换“wrapper”内的$ wrapper – stefanz 2014-09-27 09:41:55

+0

http://privtool.com/timer_html/index.html – kingcope 2014-09-27 09:50:52