[英]Auto Refresh PHP Function without reloading page Javascript / Ajax
[英]Refresh javascript calculations without reloading page
我有一個提交按鈕,該按鈕使用javascript xmlhttp請求來調用php頁面,其唯一功能是在我的主頁上為Google Earth窗口編寫kml文件。 在Web瀏覽器中無法以html的形式查看php頁面。
php文件中的公式按預期工作。 我遇到的問題是,在我第一次手動按下Submit之后,我希望腳本每5秒繼續重復一次,直到我手動重新加載頁面(或按下按鈕以停止腳本)為止。 因為我計划讓多個用戶同時查看頁面,所以會為每個用戶分配一個隨機的5位數字,以保存其會話信息,並在新創建的會話文件夾中創建kml文件,直到他們重新加載頁面為止(然后該頁面將創建用戶的新會話號)。
由於為每個用戶指定了唯一的會話ID,因此該頁面無法隨着php計算的重復而重新加載。 因此,我的javascript函數結尾處有一個return false行。
我希望能夠使用javascript調用setInterval來重復該功能,而無需重新加載頁面。 如果要重新加載頁面,則現在將無法在新會話中查看剛剛創建的kml文件。 讓我知道是否有人有任何建議。 以下是適用的代碼。
index.php主頁上的DIV ID
<div>
<form id="KMLsubmit" name=KMLsubmit >
<input class="KMLsubmit" type="submit" value="Create KML" onclick="createKML()"/>
</form>
</div>
index.php主頁上的JavaScript函數
function createKML() {
$('#KMLsubmit').submit(function () {
$.get("generateKML.php",function(data,status){
});
//alert("Generating your KML files!");
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("kmldetails").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","generateKML.php?session=" + session,true);
xmlhttp.send();
return false;
});
}
讓我知道是否有人對如何執行此操作有任何建議。 謝謝您的幫助。
嘗試
$(function(){
$('#KMLsubmit').submit(function () {
$.get("generateKML.php",function(data,status){
});
update();
return false;
});
function update(){
$.ajax({
url: 'generateKML.php',
data: {
session: session
}
}).done(function(result){
$('#kmldetails').html(result);
setTimeout(update, 5000)
});
}
})
將createKML()
外部,在KMLsubmit
提交事件上調用它,將超時功能設置為5秒,並在下次提交時清除超時,然后重新啟動該過程,如下所示:
var myTimer = false;
function createKML() {
var xmlhttp = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("kmldetails").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST", "generateKML.php", true);
xmlhttp.send("session=" + session);
myTimer = setTimeout(function(){createKML()}, 5000);
}
document.getElementById('KMLsubmit').onsubmit = function(event){
(event.preventDefault) ? event.preventDefault() : event.returnValue = false; //prevent the form from submitting and reloading the page
if(myTimer) clearTimeout(myTimer);
createKML();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.