我需要每10秒刷新一次php腳本,它用於更新系統,它會查找任何新的更新,然後將值返回給javascript/php,然後將它們顯示給div中的用戶?我如何每10秒刷新一次php腳本?
這是最好的方式,如果不是什麼?
我接受所有評論。
在此先感謝。
我需要每10秒刷新一次php腳本,它用於更新系統,它會查找任何新的更新,然後將值返回給javascript/php,然後將它們顯示給div中的用戶?我如何每10秒刷新一次php腳本?
這是最好的方式,如果不是什麼?
我接受所有評論。
在此先感謝。
設置你的AJAX調用PHP腳本一個JS函數中,函數的最後一行應爲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中。
會從PHP文件工作返回一個數組?從ajax.responseText? –
是的,但格式化爲XML或JSON,以便更容易操作 –
哦,如果你做了responseText,它應該是JSON ...如果你使用responseXML ...那麼XML –