如何在javascript中从setInterval()调用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

我想每隔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 (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。有人能帮忙编码吗?