2015-05-09 78 views
0

通过JS我每4秒运行一个函数。该函数使用调用的handler.php的PHP将一些数据发送到online mySQL表。带有超时的JS函数应该每4秒发送一次数据,但只发送一次

在第一次加载时,该行已创建。但我认为应该每4秒插入一个新行。是不是想要做到这一点?

Amn我错过了什么?

setTimeout ("iAmHere()", 5000); 
function iAmHere() { 
requestServerCall("http://domain.com/handler.php?type=active&callback=Response&cookie="+ hash +""); 
setTimeout ("iAmHere()", 4000); 
} 

handler.php

if ($_GET["type"] == 'active') { 
mysql_query("INSERT into `active` (`hash`) values ('$hash')"); 
} 

更新: 我等待5秒,以首次运行它的原因是因为我等待hash变量。

回答

0

您可以使用setInterval

setInterval(iAmHere, 5000); 

function iAmHere() { 
    requestServerCall("http://domain.com/handler.php?type=active&callback=Response&cookie="+ hash +""); 
} 

编辑:

如果你不使用iAmHere()其他地方,你可以把它们放在一起这样的:

setInterval(function() { 
    requestServerCall("http://domain.com/handler.php?type=active&callback=Response&cookie="+ hash +""); 
}, 5000); 
0

尝试setInterval(iAmHere,5000);

+0

'未捕获的RangeError:最大调用堆栈大小超过' – poulokopri

+0

@holtc是相关性的答案。 –

1

不要使用嵌套的setTimeout语句,这是导致堆栈大小错误的原因。使用setInterval()方法。

function foo(){ 
..... 
} 
setInterval(foo, 4000);