2010-12-28 19 views
37

Zastanawiałem się, czy ktoś może mi pomóc. Mam stronę php, która wyszukuje wiersze z bazy danych. Chcę wywołać to za pomocą jquery/ajax co 30 sekund. Ale chcę też móc wywołać stronę w dowolnym momencie, więc jeśli dodam rekord za pomocą formularza, po przesłaniu formularza chcę, aby strona wywołana przez ajax wywołała natychmiastowe wyniki. Czy każdy może wskazać mi właściwy kierunek lub podać kod bazowy, abym mógł spróbować to zrozumieć? Nadal bardzo nowe jquery/ajax.Połączenie Jquery/Ajax z timerem

Odpowiedz

67

Jeśli chcesz ustawić coś na zegar, można użyć setTimeout lub setInterval metody JavaScript w:

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

Gdzie expression jest funkcją i timeout i interval są liczbami całkowitymi w milisekundach. setTimeout uruchamia licznik raz i uruchamia expression jeden raz, podczas gdy setInterval uruchomi expression za każdym razem, gdy przejdzie interval.

Więc w twoim przypadku to działa tak:

setInterval(function() { 
    //call $.ajax here 
}, 5000); //5 seconds 

ile idzie Ajax, jQuery zobaczyć na ajax() method. Jeśli uruchomisz interwał, nic nie powstrzyma Cię przed wywołaniem tego samego numeru ajax() z innych miejsc w kodzie.

+0

Dzięki za odpowiedź! Więc jeśli powiesz, że jeśli użyję powyższego kodu, aby odświeżyć wywołanie ajax co 5 sekund, to na tej samej stronie mam formularz wypełniony przez kogoś, który zostanie przesłany, po zakończeniu dodawania rekordu mogę wywołać tę samą funkcję setInterval powyżej, a to nie będzie mieć 2 wystąpienia tej funkcji działającej jednocześnie? – John

+8

A więc chcesz, aby interwał był uruchamiany co 30 sekund *, dopóki * użytkownik nie zainicjuje przesyłania formularza ... i po tym czasie utworzy nowy odstęp czasu? Jest to również możliwe. 'setInterval()' zwraca liczbę całkowitą, która jest identyfikatorem przedziału. Jeśli przechowujesz ten identyfikator w zmiennej, możesz wywołać 'clearInterval (id)', które zatrzyma postęp. Następnie można przywrócić połączenie 'setInterval()' po zakończeniu przesyłania formularza ajax. – treeface