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

Javascript 每x秒自动刷新div并停止以成功加载,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我需要创建一个div,它将每10秒自动刷新一次,并在成功加载时停止。我创建了这个jQuery脚本: <script type="text/javascript"> $(document).ready(function(){ var j = jQuery.noConflict(); j(document).ready(function() { j(".refresh").everyTime(1000,function(i){

我需要创建一个div,它将每10秒自动刷新一次,并在成功加载时停止。我创建了这个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>

$(文档).ready(函数(){
var j=jQuery.noConflict();
j(文档).ready(函数()
{
每次(1000,函数(i){
j、 阿贾克斯({
url:“pin.php”,
cache:false,
成功:函数(html){
j(“.refresh”).html(html);
}
})
})
});
j('.refresh');
});
它可以工作,但每10秒刷新一次。如果
pin.php
返回数字输出,我需要它停止


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

从位于的文档中,您需要的函数可能是
stopTime
。虽然我还没有测试过它,但您的
成功中的以下几点应该会起作用:

success: function(html) {
        if (j.isNumeric(html)) {
            j(".refresh").stopTime();
        } else {
            j(".refresh").html(html);
        }
    }
您说过,“如果pin.php返回数字输出,我需要它停止”。 如果.refresh html包含数字,则停止调用ajax调用,否则将进行调用

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

    //put your ajax call in this block

}

您可以这样修改代码:

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

使用这样的间隔进行尝试,它会一直激发,直到加载的调用完成,然后停止该间隔并启动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);
}
});

首先,您不需要调用
$(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);


});

请解释一下为什么这可以解决问题。不起作用。。是stop,但不改变div文本你能给我一个到你的pin.php的直接链接吗?尝试将“success”中的$wrapper替换为$('.refresh')是否尝试将$wrapper替换为$('.refresh')?