2015-05-09 76 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);