每隔30秒jQuery Ajax请求

13 ajax jquery yql

我有这段代码,但是当某人在我的网站上时,这些值可能会发生变化.我需要每30秒左右更新一次#finance div.可以这样做吗?

$(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"
        });
});
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 34

您可以将代码放在一个单独的函数中,如下所示:

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" 
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

然后设置一个每30秒调用一次函数的计时器:

setInterval( LoadFinance, 30000 );
Run Code Online (Sandbox Code Playgroud)

祝好运!;)

  • @Nick - 实际上我通常在没有参数时使用直接引用,为什么我在上面的建议中选择了一个字符串,这是"当下的刺激"-thing ...;)但我看到你对安全范围的看法功能.我会记住它.谢谢你的教训! (2认同)

Nic*_*ver 19

您可以按间隔设置它,如下所示:

$(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();
});
Run Code Online (Sandbox Code Playgroud)

setInterval()在间隔之后第一次触发(例如,它在DOM加载后第一次运行30秒)...因此对于初始加载,您仍然需要立即调用它update().