如何在javascript中从setInterval()调用php函数?
我想每隔10秒调用一个php函数,因为我使用的是javascript setInterval。任何人都可以在语法方面提供帮助。假设您在script.php中运行php函数。客户端:如何在javascript中从setInterval()调用php函数?,javascript,php,Javascript,Php,我想每隔10秒调用一个php函数,因为我使用的是javascript setInterval。任何人都可以在语法方面提供帮助。假设您在script.php中运行php函数。客户端: var working = false; setInterval(ajaxCall, 10000); //10000 MS == 10 seconds function ajaxCall() { if(working) return; var xmlhttp; if (w
var working = false;
setInterval(ajaxCall, 10000); //10000 MS == 10 seconds
function ajaxCall() {
if(working)
return;
var xmlhttp;
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 == XMLHttpRequest.DONE ) {
working = false;
if(xmlhttp.status == 200){
console.log(xmlhttp.responseText);
}
}
}
xmlhttp.open("POST", "script.php", true);
xmlhttp.send();
working = true;
}
请看一个重复的问题(我在上面的代码中):和。假设您在script.php中运行php函数。客户端:
var working = false;
setInterval(ajaxCall, 10000); //10000 MS == 10 seconds
function ajaxCall() {
if(working)
return;
var xmlhttp;
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 == XMLHttpRequest.DONE ) {
working = false;
if(xmlhttp.status == 200){
console.log(xmlhttp.responseText);
}
}
}
xmlhttp.open("POST", "script.php", true);
xmlhttp.send();
working = true;
}
请参阅重复的问题(我在上面的代码中):和。使用setInterval调用服务器进程从来都不是一个好主意。服务器在收到下一个调用时,在返回某些内容之前,可能尚未完成工作 因为我们有Ajax,所以可以使用回调来重新发出调用 例如,在jQuery中——XMLHttpRequest的readystate更改中的技术是相同的
function callServer() {
$.get("myserverprocess.php",function(data) {
$("#somecontainer").html(data);
setTimeout(callServer,10000);
});
}
注意:如果上述操作失败,则不会重试。如果您需要它重试,请使用此
function callServer() {
$.ajax({
url: "myserverprocess.php",
type: 'get'
})
.done(function(data) {
$("#somecontainer").html(data);
})
.always(function() {
setTimeout(callServer,10000);
})
.fail(function() {
$("#somecontainer").html("Error");
});
}
在普通JS中:
function callServer() {
var x = new XMLHttpRequest();
x.open("GET", "myserverprocess.php", true);
x.onreadystatechange = function() {
if (x.readyState==4 && x.status==200) { // remove status test to keep calling
document.getElementById("someontainer").innerHTML=x.responseText
setTimeout(callServer,10000);
}
x.send();
}
使用setInterval调用服务器进程从来都不是一个好主意。服务器在收到下一个调用时,在返回某些内容之前,可能尚未完成工作 因为我们有Ajax,所以可以使用回调来重新发出调用 例如,在jQuery中——XMLHttpRequest的readystate更改中的技术是相同的
function callServer() {
$.get("myserverprocess.php",function(data) {
$("#somecontainer").html(data);
setTimeout(callServer,10000);
});
}
注意:如果上述操作失败,则不会重试。如果您需要它重试,请使用此
function callServer() {
$.ajax({
url: "myserverprocess.php",
type: 'get'
})
.done(function(data) {
$("#somecontainer").html(data);
})
.always(function() {
setTimeout(callServer,10000);
})
.fail(function() {
$("#somecontainer").html("Error");
});
}
在普通JS中:
function callServer() {
var x = new XMLHttpRequest();
x.open("GET", "myserverprocess.php", true);
x.onreadystatechange = function() {
if (x.readyState==4 && x.status==200) { // remove status test to keep calling
document.getElementById("someontainer").innerHTML=x.responseText
setTimeout(callServer,10000);
}
x.send();
}
使用ajax实现…使用setInterval(AjaxcalltoMethod,10000)使用ajax实现…使用setInterval(AjaxcalltoMethod,10000)如何通过ajax调用php函数,请提供帮助。我不建议这样做。如果在调用之前服务器没有完成,我们将中断服务器process@mplungjan提出了一个很好的观点,因此我只需在等待响应时将变量设置为,并在收到响应时将其设置为。如果变量是关闭的,那就什么都不要做。我为什么要麻烦呢。只需调用success中的下一个,我基本上想要的是,我有一个文件,每个间隔都会更新,我想在每10秒后用php显示更新的文件,并覆盖前面显示的内容。为了调用php函数,我使用了javascript。有人能帮忙编码吗?如何通过ajax调用php函数,请帮忙。我不推荐这样做。如果在调用之前服务器没有完成,我们将中断服务器process@mplungjan提出了一个很好的观点,因此我只需在等待响应时将变量设置为,并在收到响应时将其设置为。如果变量是关闭的,那就什么都不要做。我为什么要麻烦呢。只需调用success中的下一个,我基本上想要的是,我有一个文件,每个间隔都会更新,我想在每10秒后用php显示更新的文件,并覆盖前面显示的内容。为了调用php函数,我使用了javascript。有人能帮助编码吗?OP在他的问题中没有提到jQuery,但这是一个有效的答案。你能解释一下为什么这不会中断服务器吗?看起来它们将有相同的行为。在从服务器成功返回之前,它不会再次调用。我使用jQuery是为了简洁,但是setTimeout可以在普通JSOk中的successful readystatechange事件中使用,而无需更改。回答很好。
$.get()
的回调函数仅在成功时调用,因此如果出现任何服务器错误,它将不会发出另一个请求;这可以通过使用$.ajax()
来克服,并在完整的处理程序中设置新的超时。我基本上想要的是,我有一个文件,每个间隔都会更新,我想在每10秒后使用php显示更新的文件,并覆盖前面显示的文件。为了调用php函数,我使用了javascript。有人能帮助编码吗?OP在他的问题中没有提到jQuery,但这是一个有效的答案。你能解释一下为什么这不会中断服务器吗?看起来它们将有相同的行为。在从服务器成功返回之前,它不会再次调用。我使用jQuery是为了简洁,但是setTimeout可以在普通JSOk中的successful readystatechange事件中使用,而无需更改。回答很好。$.get()
的回调函数仅在成功时调用,因此如果出现任何服务器错误,它将不会发出另一个请求;这可以通过使用$.ajax()
来克服,并在完整的处理程序中设置新的超时。我基本上想要的是,我有一个文件,每个间隔都会更新,我想在每10秒后使用php显示更新的文件,并覆盖前面显示的文件。为了调用php函数,我使用了javascript。有人能帮忙编码吗?