簡體   English   中英

我如何每十秒鍾刷新一次php腳本?

[英]how do i refresh a php script every ten seconds?

我需要每十秒鍾刷新一次php腳本,這是一個更新系統,它將查找任何新的更新,然后將值返回到javascript / php,然后在div中向用戶顯示?

如果不是的話,這是最好的方法嗎?

我願意接受所有評論。

提前致謝。

在JS函數中設置對php腳本的AJAX調用,函數的最后一行應為setTimeout(functionname, 10000);

哦,而且,您需要在某處第一次調用該函數,然后它將繼續運行...所以:

<html><head>
<script>
function update(){
//your ajax here
setTimeout(update,10000);
}
update();
</script></head>
<body><div id="theDivToUpdate"></div></body></html>

這是一些示例代碼,向您展示如何傳遞JSON或XML並使HTML頁面處理它。 這是PHP(這里的數據只是硬編碼的,但是在您的情況下,您將動態填充):

<?php
$format=$_REQUEST['format'];
if($format=="json"){
    header('Content-type: application/json');
    header('Cache-Control: no-cache, must-revalidate');
    echo "{\"status\":\"ok\",\"results\":[{\"first\":\"MyFirst\",\"last\":\"MyLast\",\"company\":\"Big Company\"},{\"first\":\"YourFirst\",\"last\":\"YourLast\",\"company\":\"Another Company\"},{\"first\":\"John\",\"last\":\"Doe\",\"company\":\"What Company?\"},{\"first\":\"Jane\",\"last\":\"Doe\",\"company\":\"Stackoverflow\"}]}";
}
else if($format=="xml"){
    header("Content-type: text/xml");
    header('Cache-Control: no-cache, must-revalidate');
    echo "<ROOT><STATUS>ok</STATUS><RESULTS><RESULT><FIRST>MyFirst</FIRST><LAST>MyLast</LAST><COMPANY>Big Company</COMPANY></RESULT><RESULT><FIRST>YourFirst</FIRST><LAST>YourLast</LAST><COMPANY>Another Company</COMPANY></RESULT><RESULT><FIRST>John</FIRST><LAST>Doe</LAST><COMPANY>What Company?</COMPANY></RESULT><RESULT><FIRST>Jane</FIRST><LAST>Doe</LAST><COMPANY>Stackoverflow</COMPANY></RESULT></RESULTS></ROOT>";
    }

else{
    echo "You need to supply the \'format\' parameter (json or xml)";
}
?>

然后是一個示例html頁面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script>

function getJSON(){
        var xmlhttp;
        xmlhttp=((window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"));
        xmlhttp.onreadystatechange=function()
        {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                var res=xmlhttp.responseText; //THE JSON STRING IS TEXT
                res=JSON.parse(res);  //THIS CONVERTS THE JSON INTO OBJECTS THAT CAN BE ACCESSED WITH DOT NOTATION
                if(res.status=="ok"){
                    newtable="<table><tr><th>First</th><th>Last</th><th>Company</th></tr>";
                    for(i=0;i<res.results.length;i++){
                        newtable+="<tr><td>"+res.results[i].first+"</td><td>"+res.results[i].last+"</td><td>"+res.results[i].company+"</td></tr>";
                    }
                    newtable+="</table>";
                    document.getElementById('resultDiv').innerHTML=newtable;
                }
            }
        }
        xmlhttp.open("GET","thePHPFile.php?format=json",true);
        xmlhttp.send();
}

function getXML(){
        var xmlhttp;
        xmlhttp=((window.XMLHttpRequest)?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP"));
        xmlhttp.onreadystatechange=function()
        {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                res=xmlhttp.responseXML;
                firstNameFields=res.documentElement.getElementsByTagName("FIRST"); //THESE LINES GRAB ALL OF THE NODES WITH THE INDICATED NAME AND HOLD THEM IN ARRAYS
                lastNameFields=res.documentElement.getElementsByTagName("LAST");
                companyFields=res.documentElement.getElementsByTagName("COMPANY");
                newtable="<table><tr><th>First</th><th>Last</th><th>Company</th></tr>";
                for(i=0;i<firstNameFields.length;i++){
                    newtable+="<tr><td>"+firstNameFields[i].firstChild.nodeValue+"</td><td>"+lastNameFields[i].firstChild.nodeValue+"</td><td>"+companyFields[i].firstChild.nodeValue+"</td></tr>";
                }
                newtable+="</table>";
                document.getElementById('resultDiv').innerHTML=newtable;
            }
        }
        xmlhttp.open("GET","thePHPFile.php?format=xml",true);
        xmlhttp.send();
}   

</script>
</head>

<body>
<input type="button" onclick="getJSON()" value="Retrieve and Parse JSON" />
<input type="button" onclick="getXML()" value="Retrieve and Parse XML" />
<div id="resultDiv"></div>
</body>
</html>

如果它顯示在Web瀏覽器中,我只需要在setInterval()函數中執行ajax調用即可輪詢服務器以獲取更新。 因此,請使用JavaScript而不是PHP進行刷新。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM