2014-09-26 140 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