2011-02-08 10 views

Odpowiedz

119

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 
3

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) 

;

+1

setinterval jest faktycznie z javascript nie jquery. –

3

można użyć setInterval() w JavaScript

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

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

+0

Link do _everytime_ jest zepsuty ... – nbro

+0

link jest zepsuty i jaką ma przewagę, nie możemy po prostu użyć setinterval zamiast? –

5

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(); 
+0

Dlaczego po prostu nie dodać 'setTimeout (request(), 1000);' wewnątrz req.done i uniknąć konieczności sprawdzania bool? – Wobbles

+0

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

0

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); 
     });//