Php Ajax并不总是被调用
好的,我有一个按钮“向上”,当按下该按钮时,从8开始倒计时,当它达到0时,会发出一个对update.php的ajax调用,从而更新一个sql表。update.php正在运行Php Ajax并不总是被调用,php,jquery,ajax,Php,Jquery,Ajax,好的,我有一个按钮“向上”,当按下该按钮时,从8开始倒计时,当它达到0时,会发出一个对update.php的ajax调用,从而更新一个sql表。update.php正在运行 <input type='button' id='countdw' value='Wait 8s' class='btn btn-primary disabled'> 这是密码 <script> var secsLeft = 8;
<input type='button' id='countdw' value='Wait 8s' class='btn btn-primary disabled'>
这是密码
<script>
var secsLeft = 8;
setInterval(function(){
secsLeft--;
if(secsLeft > 0){
$('#countdw').val('Wait ' + secsLeft + 's');
} else if(secsLeft == 0){
$('#countdw').removeClass('disabled');
$('#countdw').val('UP');
$('#countdw').attr("onclick","myfunction()");
}
}, 1000);
</script>
<script>
count=0;
function myfunction(){
if(mycount!=0 && mycount%25==0){
}else{
var secsLeft = 8;
setInterval(function(){
secsLeft--;
if(secsLeft > 0){
$('#countdw').addClass('disabled');
$('#countdw').val('Wait ' + secsLeft + 's');
} else if(secsLeft == 0){
$('#countdw').removeClass('disabled');
$('#countdw').val('UP');
$('#countdw').attr("onclick","myfunction()");
$.ajax({
url: "update.php",
data:{'user':'<?php echo $subid ?>','data':'<?php echo $key ?>'},
success: function(result){
}
});
}
}, 1000);
}
up();
}
</script>
var secsLeft=8;
setInterval(函数(){
secsLeft--;
如果(secsLeft>0){
$('#countdw').val('Wait'+secsLeft+'s');
}else if(secsLeft==0){
$('#countdw').removeClass('disabled');
$('#countdw').val('UP');
$('#countdw').attr(“onclick”,“myfunction()”);
}
}, 1000);
计数=0;
函数myfunction(){
如果(mycount!=0&&mycount%25==0){
}否则{
var secsLeft=8;
setInterval(函数(){
secsLeft--;
如果(secsLeft>0){
$('#countdw').addClass('disabled');
$('#countdw').val('Wait'+secsLeft+'s');
}else if(secsLeft==0){
$('#countdw').removeClass('disabled');
$('#countdw').val('UP');
$('#countdw').attr(“onclick”,“myfunction()”);
$.ajax({
url:“update.php”,
数据:{'user':'','data':''},
成功:功能(结果){
}
});
}
}, 1000);
}
up();
}
任何帮助都将不胜感激 小于或等于
# instead of
# if(secsLeft == 0){
# test if it's less-or-equal zero
if(secsLeft <= 0){
#而不是
#如果(secsLeft==0){
#测试它是否小于或等于零
如果(secsLeft首先,我希望你原谅我的英语。我不能真正理解你的想法,但是当看到你的代码时,变量mycount
的作用是什么?它在哪里定义?当setInterval()时
在第一个脚本块运行时,secsLeft
总是会不断减少。所以每次secsLeft
都会那么哪个部分不起作用。PHP脚本还是AJAX?你调试过看它停止处理的地方了吗?很好,是update.PHP,但感谢你推荐开发人员工具。我只是安装/使用了firebug,它帮助我发现了问题。我经常尝试secLeft,我们只能指出一些方向,尽管解决方案是其他的。:-)非常感谢您的回答。我已经实现了这一点,因为是的,这是有意义的,尽管我的原始代码似乎工作正常,但它只是update.php出现了问题。我注意到的一件事是,使用Chrome,setInterval运行极慢,可能只有我一个人?但使用我的代码和您的修订版本,我的倒计时非常快。你知道什么原因吗?也许只是我。根据用户的CPU使用情况,进程可能需要时间来运行。然后你必须考虑到,时间函数如<代码> SETIFATION 不能很好地遵守确切的定义的时间间隔。1000毫秒
;这样您就可以有一个边距误差。
# instead of
# if(secsLeft == 0){
# test if it's less-or-equal zero
if(secsLeft <= 0){
<script>
var secsLeft = 8;
var timedDecreaseID = setInterval(function(){
secsLeft--;
if(secsLeft > 0){
$('#countdw').val('Wait ' + secsLeft + 's');
} else { //secsLeft <= 0
$('#countdw').removeClass('disabled');
$('#countdw').val('UP');
$('#countdw').attr("onclick","myfunction()");
clearInterval( timedDecreaseID );//will stop this timed function
}
}, 1000);
</script>
<script>
count=0;
function myfunction(){
if(mycount!=0 && mycount%25==0){
}else{
var secsLeft = 8;
timedDecreaseID = setInterval(function(){
secsLeft--;
if(secsLeft > 0){
$('#countdw').addClass('disabled');
$('#countdw').val('Wait ' + secsLeft + 's');
} else {//secsLeft <= 0
$('#countdw').removeClass('disabled');
$('#countdw').val('UP');
$('#countdw').attr("onclick","myfunction()");
$.ajax({
url: "update.php",
data:{'user':'<?php echo $subid ?>','data':'<?php echo $key ?>'},
success: function(result){
}
});
clearInterval( timedDecreaseID );//will stop this timed function
}
}, 1000);
}
up();
}
</script>