我需要创建一个每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
返回数字输出,如何编辑它以停止刷新?
答案 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);
});