Call jQuery Ajax Request Each X Minutes
How can I call an Ajax Request in a specific time Period? Should I use Timer Plugin or does jQuery开发者_运维问答 have a plugin for this?
You can use the built-in 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);
or if you are the more terse type ...
setInterval(function() {
//your jQuery ajax code
}, 1000 * 60 * X); // where X is your every X minutes
A bit late but I used jQuery ajax method. But I did not want to send a request every second if I haven't got the response back from the last request, so I did this.
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();
you can use setInterval()
in javascript
<script>
//Call the yourAjaxCall() function every 1000 millisecond
setInterval("yourAjaxCall()",1000);
function yourAjaxCall(){...}
</script>
No plugin required. You can use only jquery.
If you want to set something on a timer, you can use JavaScript's setTimeout
or setInterval
methods:
setTimeout ( expression, timeout );
setInterval ( expression, interval );
You have a couple options, you could setTimeout()
or setInterval()
. Here's a great article that elaborates on how to use them.
The magic is that they're built in to JavaScript, you can use them with any library.
use jquery Every time Plugin .using this you can do ajax call for "X" time period
$("#select").everyTime(1000,function(i) {
//ajax call
}
you can also use setInterval
I found a very good jquery plugin that can ease your life with this type of operation. You can checkout https://github.com/ocombe/jQuery-keepAlive.
$.fn.keepAlive({url: 'your-route/filename', timer: 'time'}, function(response) {
console.log(response);
});//
Instead of having an absolute repeating timer, you should call the function after completing the initial request (like a recursive function).
This ensures that requests will be sent only after completing the previous one. This avoids the issues like queuing up of requests and thereby Denial of Service.
(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);
});
})();
精彩评论