Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有计时器的jQuery/AJAX调用_Javascript_Jquery_Ajax_Web.py - Fatal编程技术网

Javascript 带有计时器的jQuery/AJAX调用

Javascript 带有计时器的jQuery/AJAX调用,javascript,jquery,ajax,web.py,Javascript,Jquery,Ajax,Web.py,我如何使用jQuery/AJAX定时器实现下面的代码(我已经使用web.py创建了两个URL类。这里第一个URL将返回一个介于1和250之间的随机数。我已经在第二个URL中创建了一个AJAX调用,因此当您点击按钮时,AJAX将调用第一个URL中的值,并显示在文本框中),现在我只想修改代码,比如在每5秒钟内,AJAX应该调用来自第一个URL的数字,并且它应该显示在文本框中。有没有办法通过使用jQuery/AJAX计时器来解决这个问题 import web import random urls =

我如何使用jQuery/AJAX定时器实现下面的代码(我已经使用web.py创建了两个URL类。这里第一个URL将返回一个介于1和250之间的随机数。我已经在第二个URL中创建了一个AJAX调用,因此当您点击按钮时,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()
导入web
随机输入
URL=(
“/”、“主要”,
“/random”、“fill”)
app=web.application(URL,globals(),True)
班长:
def GET(自我):
返回random.randint(1250)
班级填写:
def GET(自我):
返回“”'
$(文档).ready(函数(){
$(“按钮”)。单击(函数(){
$.ajax({url:http://127.0.0.1:8080/,成功:函数(结果){
$(“#文本”).val(结果);
}});
});});
点击按钮查看随机数
点击
'''
如果名称=“\uuuuu main\uuuuuuuu”:
app.run()

您可以创建一个函数并设置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>

显示数字(){
$.ajax({url:http://127.0.0.1:8080/,success:function(result){$(“#text”).val(result);};
}
$(文档).ready(函数(){
设置间隔('DisplayNumber',5000);
}

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

当ajax调用从服务器返回时,创建一个计时器,它将在几毫秒后再次轮询服务器。无论ajax调用需要多长时间才能完成,这种方法都应该有效

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

谢谢你的建议。如果ajax调用需要5秒以上的时间才能完成怎么办?