2011-07-27 21 views
5

如何使用jQuery/AJAX計時器實現下面的代碼,(我已經使用web.py.Here創建了2個URL類,第1個URL將返回1到250之間的隨機數。已經在第二個URL中創建了一個AJAX調用,所以當你點擊按鈕時,AJAX將調用第一個URL的值,它將顯示在文本框內),現在我只想修改代碼,例如每5秒AJAX應該從第一個URL調用數字,它應該顯示在文本框內。有什麼方法可以通過使用jQuery/AJAX定時器來解決這個問題。帶定時器的jQuery/AJAX調用

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

回答

5

當ajax調用從服務器返回時,請創建一個計時器,以便在服務器再次輪詢n毫秒。無論ajax調用完成需要多長時間,這種方法都可以工作。

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

謝謝Chris .. – Sreehari

0

您可以創建一個功能,並設置一個JavaScript計時器來調用它每5秒:

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

我沒有檢查的代碼,但你的想法。

+0

謝謝您的建議。 – Sreehari

+0

如果ajax調用需要5秒以上的時間才能完成? –