每X分钟调用一次jQuery AJAX 请求

z9smfwbn  于 2023-06-29  发布在  jQuery
关注(0)|答案(8)|浏览(107)

如何在特定时间段内调用 * AJAX 请求 *?我应该使用 Timer Plugin 还是 jQuery 有这个插件?

bmp9r5qi

bmp9r5qi1#

您可以使用内置的JavaScript setInterval。

var ajax_call = function() {
  //your jQuery ajax code
};

var interval = 1000 * 60 * X; // where X is your every X minutes

setInterval(ajax_call, interval);

或者你是那种比较简洁的人

setInterval(function() {
  //your jQuery ajax code
}, 1000 * 60 * X); // where X is your every X minutes
vshtjzan

vshtjzan2#

有点晚,但我用jQuery AJAX 方法。但是我不想在没有从上一个请求得到响应的情况下每秒钟都发送一个请求,所以我这样做了。

function request(){
            if(response == true){
                // This makes it unable to send a new request 
                // unless you get response from last request
                response = false;
                var req = $.ajax({
                    type:"post",
                    url:"request-handler.php",
                    data:{data:"Hello World"}
                });

                req.done(function(){
                    console.log("Request successful!");

                    // This makes it able to send new request on the next interval
                    response = true;
                });
            }

            setTimeout(request(),1000);
        }

        request();
kx5bkwkv

kx5bkwkv3#

你可以在JavaScript中使用setInterval()

<script>
//Call the yourAjaxCall() function every 1000 millisecond
setInterval("yourAjaxCall()",1000);
function yourAjaxCall(){...}
</script>
cgvd09ve

cgvd09ve4#

无需插件。你只能使用jquery。
如果你想在定时器上设置一些东西,你可以使用JavaScript的setTimeoutsetInterval方法:

setTimeout ( expression, timeout );
setInterval ( expression, interval );
nnt7mjpx

nnt7mjpx5#

你有几个选择,你可以setTimeout()setInterval()Here's a great article that elaborates on how to use them
神奇的是它们内置在JavaScript中,你可以在任何库中使用它们。

nxowjjhe

nxowjjhe6#

使用jquery Every time Plugin .使用这个你可以 AJAX 调用“X”时间段

$("#select").everyTime(1000,function(i) {
//ajax call
}

也可以使用setInterval

6ju8rftf

6ju8rftf7#

我发现了一个非常好的jquery插件,可以用这种类型的操作来缓解你的生活。你可以 checkout https://github.com/ocombe/jQuery-keepAlive

$.fn.keepAlive({url: 'your-route/filename', timer: 'time'},       function(response) {
        console.log(response);
      });//
ej83mcc0

ej83mcc08#

不应该使用绝对重复计时器,而应该在完成初始请求后调用函数(类似于递归函数)。
这确保了请求只会在完成前一个后才被发送。这避免了请求排队等问题,从而避免了拒绝服务。

(function ajaxRequest() {
  $.ajax('url_of_your_application.php', {
    type: 'post',
    data: {
      phone: '1234567890',
    },
  })
    .done(function (data) {
      // Do whatever you want with the data.
    })
    .always(function (data) {
      // We are starting a new timer only AFTER COMPLETING the previous request.
      setTimeout(ajaxRequest, 5000);
    });
})();

相关问题