我有一个倒数计时器,当它完成它运行一个PHP脚本(文件名为ajax.php)问题是ajax.php运行多次。
我想在表格中得到这个结果
[id][content]
[1][timer]
但我得到了这个结果
[id][content]
[1][timer]
[2][timer]
[3][timer]
[4][timer]
[5][timer]
[6][timer]
[7][timer]
[8][timer]
[9][timer]
.....
这是代码
<div id="counter"></div>
<script src="jquery.js"></script>
<script>
var div = $('#counter');
var n = 5000;
var blured = false;
var tid = setInterval(function() {
if (blured) return;
n -= 100;
div.text( (n / 1000).toFixed(1) + ' seconds passed' );
if ( n <= 0 ) {
div.text('Time passed!');
$.ajax({
url: 'ajax.php',
type: 'post',
success: function(data, status) {}
});
}
}, 100);
window.onblur = function() {
blured = true;
};
window.onfocus = function() {
blured = false;
};
document.getElementById("progress").innerHTML="<div style=\"width:'.$percent.';background-color:#ddd;\"> </div>";
// document.getElementById("information").innerHTML="'.$i.' row(s) processed.";
window.onblur = function() {
blured = true;
};
window.onfocus = function() {
blured = false;
};
</script>
这是ajax.php
mysql_connect("localhost","root","usbw") or die ("Couldn't connect to server");
mysql_select_db("test") or die ("Coouldn't Select Database");
$query = mysql_query("INSERT INTO add_delete_record VALUES ('', 'timer')");
答案 0 :(得分:1)
这实际上是 setInterval 的工作原理。从你的代码我可以看到你将它设置为100毫秒,因此你的浏览器将每0.1秒进行一次ajax调用,它将永远持续下去。 为了避免它,您必须首先知道函数setInterval()返回一个ID,您可以使用该ID来稍后清除该事件处理程序。只需使用 clearInterval()。
示例:
var tid = setInterval(function(){},100);
/*Later you can use*/
clearInterval(tid);
如果您需要更多信息,请查看setInterval()和clearInterval()的文档。
答案 1 :(得分:0)
var tid = setInterval(function() {
if (blured) return;
n -= 100;
div.text( (n / 1000).toFixed(1) + ' seconds passed' );
if ( n <= 0 ) {
div.text('Time passed!');
clearTimeout(tid);
$.ajax({
url: 'ajax.php',
type: 'post',
success: function(data, status) {}
});
}
}, 100);