jQuery Ajax request every 30 seconds

后端 未结 3 1853
被撕碎了的回忆
被撕碎了的回忆 2020-12-03 08:08

I have this piece of code, but the values may change while someone is on my site. I would need to update the #finance div every 30 seconds or so. Can this be done?



        
相关标签:
3条回答
  • 2020-12-03 08:45

    Absolutely:

    setInterval(      
      function() {
        $.getJSON(
          "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22%5EFTSE%22)%0A%09%09&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=?",
    
        function(json){ $('#finance').text(json.query.results.quote.Change);
        // Patching payload into page element ID = "dog" });
    
      },
      30000);
    
    0 讨论(0)
  • 2020-12-03 08:52

    You can set it on an interval, like this:

    $(function() {
      function update() {
          $.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22%5EFTSE%22)%0A%09%09&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=?", 
          function(json){
            $('#finance').text(json.query.results.quote.Change);  
        });
      }
      setInterval(update, 30000);
      update();
    });
    

    setInterval() fires the first time after the interval (e.g. it first runs 30 seconds after the DOM loads here)... so for the that initial load, you still need to call it immediately as well via update().

    0 讨论(0)
  • 2020-12-03 08:59

    You can put your code in a separate function like this:

    function LoadFinance()
    {
        $(function() {
            $.getJSON(
            "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%20in%20(%22%5EFTSE%22)%0A%09%09&format=json&env=http%3A%2F%2Fdatatables.org%2Falltables.env&callback=?",
            function(json){ $('#finance').text(json.query.results.quote.Change);
            // Patching payload into page element ID = "dog" 
            });
        });
    }
    

    And then set up a timer calling the function every 30 seconds:

    setInterval( LoadFinance, 30000 );
    

    Good luck! ;)

    0 讨论(0)
提交回复
热议问题