2011-07-27 17 views
5

¿Cómo puedo implementar el siguiente código con el temporizador jQuery/AJAX, (he creado 2 clases de URL usando web.py.Here 1st URL devolverá un número aleatorio entre 1 y 250.I hemos creado una llamada AJAX en la segunda URL, de modo que cuando presionas el botón, AJAX llame los valores desde la primera URL y se muestre dentro del cuadro de texto), ahora solo quiero modificar el código como cada 5 segundos AJAX debe llamar a los números desde la primera URL y debe mostrarse dentro del cuadro de texto. Hay alguna forma de resolver este problema usando el temporizador jQuery/AJAX.llamada jQuery/AJAX con un temporizador

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() 

Respuesta

5

Cuando las ajax devuelve la llamada desde el servidor, cree un temporizador que sondeará el servidor de nuevo n milisegundos más tarde. Este enfoque debería funcionar independientemente de cuánto tiempo tarde en completarse la llamada ajax.

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

Gracias Chris ... – Sreehari

0

Se puede crear una función y establecer un temporizador Javascript a llamarla cada 5 segundos:

<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> 

No he comprobado el código, pero usted consigue la idea.

+0

Gracias por la sugerencia. – Sreehari

+0

¿Qué sucede si la llamada ajax tarda más de 5 segundos en completarse? –

Cuestiones relacionadas