2013-03-05 165 views
3

每x分鐘獲得了該文件「的functions.php」:運行PHP腳本使用Ajax請求

<?php 
function test ($url){ 
$starttime = microtime(true); 
$valid = @fsockopen($url, 80, $errno, $errstr, 30); 
$stoptime = microtime(true); 
echo (round(($stoptime-$starttime)*1000)).' ms.'; 

if (!$valid) { 
    echo "Status - Failure"; 
} else { 
    echo "Status - Success"; 
} 
} 
    test('google.com'); 
?> 

我想運行它的每一個10秒左右,我被告知要使用Ajax請求,但我不完全理解怎麼運行的。我試圖創建一個新的文件「的index.php」,然後就這樣寫在上面:

<script> 
var milliSeconds = 10000; 
setInterval(function() { 
    //Ajax request, i dont know how to write it 
    xmlhttp.open("POST","functions.php",true); 
    xmlhttp.send(); 
}, milliSeconds); 
</script> 

我把兩個文件到FTP,但什麼也沒發生,有人可以幫我寫個propper Ajax請求?

編輯:eddited錯字,還是不起作用壽

+1

聽起來像你應該看看「body onload」功能來觸發你的循環(http://www.w3schools.com/jsref/event_body_onload.asp) – Najzero 2013-03-05 08:29:39

+0

@Najzero你是對,在dom加載之前它可能會失敗幾次,但之後呢? – karaxuna 2013-03-05 08:33:43

+0

@Najzero:請大家幫忙,不要鏈接http://w3fools.com作爲參考。 @ user1894929你在'.open()'調用中遇到了錯字。 – jAndy 2013-03-05 08:34:03

回答

1
var milliSeconds = 1000; 

setInterval(function() { 

var xmlhttp; 

if (window.XMLHttpRequest) // code for IE7+, Firefox, Chrome, Opera, Safari 
{ 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{ 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); // code for IE6, IE5 
} 

xmlhttp.onreadystatechange=function() 
{ 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     console.log (xmlhttp.responseText); 
     } 
} 

xmlhttp.open("POST","functions.php",true); 
xmlhttp.send(); 


}, milliSeconds); 

你必須根據瀏覽器(xmlhttp=new XMLHttpRequest();)加載XMLHTTP請求對象,然後設置一個事件處理程序,當XMLHTTP狀態改變(xmlhttp.onreadystatechange=function())。當它改變時,檢查狀態是否爲200(成功),然後做任何你想要的迴應。 (我打印到控制檯)

0
xmlhttp.open("POST","funkction.php",true); 

應該是:

xmlhttp.open("POST","functions.php",true); 
1

所以,它聽起來就像你唯一的問題是,你不知道如何寫一個XHR請求。看看Using XMLHttpRequest。用你的問題評論這個答案。