jQuery/AJAX call with a timer

回眸只為那壹抹淺笑 提交于 2019-12-10 14:16:27

问题


How can i implement the below code with jQuery/AJAX timer,(I have created 2 URL classes by using web.py.Here 1st URL will return a random number between 1 and 250.I have created an AJAX call in the 2nd URL,so that when you hit the button ,AJAX will call the values from the 1st URL and it will display inside the text box),Now i just want to modify the code like during every 5 seconds AJAX should call the numbers from 1st URL and it should display inside the text box.Is there any way to solve this problem by using jQuery/AJAX timer.

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

回答1:


When the ajax call returns from the server, create a timer that will poll the server again n milliseconds later. This approach should work regardless of how long it takes for the ajax call to complete.

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



回答2:


You could create a function and set a javascript timer to call it every 5 seconds:

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

I haven't checked the code, but you get the idea.



来源:https://stackoverflow.com/questions/6840140/jquery-ajax-call-with-a-timer

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!