2011-07-27 14 views
5

W jaki sposób mogę zaimplementować poniższy kod za pomocą timera jQuery/AJAX, (Stworzyłem 2 klasy adresów URL za pomocą web.py.Here pierwszy URL zwróci liczbę losową od 1 do 250.I utworzyłem wywołanie AJAX w drugim adresie URL, dzięki czemu po naciśnięciu przycisku AJAX wywoła wartości z 1 adresu URL i wyświetli się w polu tekstowym), teraz chcę zmodyfikować kod jak co 5 sekund AJAX powinien wywoływać liczby z 1. adresu URL i powinien wyświetlać się w polu tekstowym. Czy istnieje sposób na rozwiązanie tego problemu za pomocą zegara jQuery/AJAX.Wywołanie jQuery/AJAX z timerem

import web 
import random 

urls = (
    '/', 'main', 
    '/random','fill') 


app = web.application(urls, globals(), True) 

class main: 
    def GET(self): 
     return random.randint(1,250) 


class fill: 
    def GET(self): 
     return''' 
     <html> 
     <head> 
     <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.2.min.js"></script> 
     <script type="text/javascript"> 
     $(document).ready(function(){ 
     $("button").click(function(){ 
      $.ajax({url:"http://127.0.0.1:8080/", success:function(result){ 
      $("#text").val(result); 
      }}); 
     });}); 
     </script> 
     </head> 
     <body> 


     <form> 
     <input type = "text" id = "text"/> 
     </form> 
     <h2>Hit the button to view random numbers</h2> 
     <button>Click</button> 
     </body> 
     </html>''' 



if __name__ == "__main__": 
    app.run() 

Odpowiedz

5

Gdy wywołanie ajax wywoła się z serwera, utwórz licznik czasu, który będzie odpytywać serwer ponownie n milisekund później. To podejście powinno działać bez względu na to, ile czasu zajmuje wywołanie ajax.

$("button").click(function refreshText(){ 
    $.ajax({ 
     url:"http://127.0.0.1:8080/", 
     success:function(result){ 
      $("#text").val(result); 
      setTimeout(refreshText, 5000); 
     } 
    }); 
}); 
+0

Dziękuję Chris .. – Sreehari

0

Można by utworzyć funkcję i ustawić zegar javascript, aby nazwać to co 5 sekund:

<script type="text/javascript"> 
displayNumbers() { 
    $.ajax({url:"http://127.0.0.1:8080/", success:function(result){ $("#text").val(result); }}); 
} 

$(document).ready(function() { 
    setInterval('displayNumbers', 5000); 
} 
</script> 

Nie sprawdzałem kod, ale masz pomysł.

+0

Dziękuję za sugestię. – Sreehari

+0

Co zrobić, jeśli wywołanie ajax trwa dłużej niż 5 sekund? –