我不知道太多关于JavaScript的,这里是我的代码:JavaScript的 - 函数返回两次
<script language="JavaScript">
var x = 10
function startClock() {
if (x !== ' ') {
x = x - 1
document.frm.clock.value = x
setTimeout("startClock()", 1000)
}
if (x == 0) {
x = ' ';
document.frm.clock.value = x;
success.location.href = "success.php";
}
}
</script>
<body onLoad(startClock);>
受影响的iframe:
<input name="clock" size="3" readonly="readonly"
<iframe name="success" src="blank.htm"></iframe>
当定时器倒计时,success.php被加载两次。我知道这是因为1)它将数据插入我的数据库两次,2)我实际上可以看到加载符号在标签重新加载一秒钟。
当我改变函数是这样的:
<script language="JavaScript">
var x = 10
var y = 1
function startClock() {
if (x !== 'Fin') {
x = x - y
document.frm.clock.value = x
setTimeout("startClock()", 1000)
}
if (x == 0) {
x = 'Fin';
document.frm.clock.value = x;
success.location.href = "success.php";
}
}
</script>
...页面只装载一次。
谁能告诉我这里发生了什么?我使用的地方“”“0”也试过,得到了相同的双执行...
改变你的第二个'if'和'else if'可能会解决你的问题。 – Ivan 2012-01-11 23:20:47
*“它将数据插入我的数据库两次。”*然后您可能需要修复您的服务器页面。 “GET”操作必须是[幂等](http://en.wikipedia.org/wiki/Idempotence)(抱歉,不是我的话)。对于*改变事物的操作,使用'POST'或其他动词之一。 (在我看来,例外是“访问”数据。) – 2012-01-11 23:22:34
问题的第一个版本使用了标志值'“”'。当前版本使用'“Fin”'。这是什么?哦,等一下,它又回到''“''。 – 2012-01-11 23:23:29