用计时器调用jQuery / AJAX

时间:2011-07-27 06:19:02

标签: javascript jquery ajax web.py

如何使用jQuery / AJAX计时器实现以下代码,(我已经使用web.py创建了2个URL类。第1个URL将返回1到250之间的随机数。我已经创建了一个AJAX调用第二个URL,这样当你点击按钮时,AJAX将调用第一个URL中的值,它将显示在文本框内),现在我只想修改代码,就像每隔5秒钟一样,AJAX应该从第一个调用数字URL和它应该显示在文本框内。有什么方法可以通过使用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()

2 个答案:

答案 0 :(得分: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);
        }
    });
});

答案 1 :(得分: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>

我没有检查过代码,但是你明白了。