Jak mogę połączyć się z żądaniem Ajax w określonym czasie? Czy powinienem używać wtyczki Timer lub czy jQuery ma wtyczkę do tego?Zadzwoń do żądań Ajax jQuery Każda X minut
Odpowiedz
Można użyć wbudowanego zestawu 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);
lub jeśli jesteś bardziej lakoniczny typ ...
setInterval(function() {
//your jQuery ajax code
}, 1000 * 60 * X); // where X is your every X minutes
Masz kilka opcji, możesz setTimeout()
lub setInterval()
. Here's a great article that elaborates on how to use them.
Magia polega na tym, że są one wbudowane w JavaScript, można ich używać z dowolną biblioteką.
Nie Pugin wymagane .you można używać tylko jQuery.
Jeśli chcesz ustawić coś na zegar, można użyć JavaScript w setTimeout
lub setInterval
metody:
setTimeout (expression, timeout);
setInterval (expression, interval)
;
setinterval jest faktycznie z javascript nie jquery. –
można użyć setInterval()
w JavaScript
<script>
//Call the yourAjaxCall() function every 1000 millisecond
setInterval("yourAjaxCall()",1000);
function yourAjaxCall(){...}
</script>
użyć jQuery Every time Plugin jakości wyników z użyciem tego można zrobić ajax wezwanie do "X" okresu
$("#select").everyTime(1000,function(i) {
//ajax call
}
można również użyć setInterval
Link do _everytime_ jest zepsuty ... – nbro
link jest zepsuty i jaką ma przewagę, nie możemy po prostu użyć setinterval zamiast? –
Trochę za późno, ale użyłem metody ajax jQuery. Ale nie chciałem wysyłać zapytania co sekundę, jeśli nie otrzymałem odpowiedzi od ostatniego żądania, więc zrobiłem to.
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();
Dlaczego po prostu nie dodać 'setTimeout (request(), 1000);' wewnątrz req.done i uniknąć konieczności sprawdzania bool? – Wobbles
Cóż, dobre myślenie. Ale bool może być świetny do sprawdzania, czy żądanie zostało zgłoszone nigdzie indziej w kodzie. Mówimy, że możesz kliknąć przycisk przesyłania tylko po otrzymaniu odpowiedzi, możesz użyć tego przycisku, aby sprawdzić, czy odpowiedź nadejdzie, czy nie. – linslusa
Znalazłem bardzo dobrą wtyczkę jQuery, która może ułatwić Ci życie dzięki temu typowi operacji. Możesz sprawdzić https://github.com/ocombe/jQuery-keepAlive.
$.fn.keepAlive({url: 'your-route/filename', timer: 'time'}, function(response) {
console.log(response);
});//
Możesz google to. http://stackoverflow.com/questions/4542863/jquery-ajax-call-with-timer – Zabba
Co zrobiłeś? – PinoyStackOverflower