Javascript 每x秒自动刷新div并停止以成功加载
我需要创建一个div,它将每10秒自动刷新一次,并在成功加载时停止。我创建了这个jQuery脚本: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){
<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')?