JQuery Ajax-запрос каждые 30 секунд - PullRequest
12 голосов
/ 15 декабря 2010

У меня есть этот кусок кода, но значения могут измениться, когда кто-то находится на моем сайте.Мне нужно будет обновлять div #finance каждые 30 секунд или около того.Можно ли это сделать?

$(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"
        });
});

Ответы [ 3 ]

33 голосов
/ 15 декабря 2010

Вы можете поместить свой код в отдельную функцию, например:

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" 
        });
    });
}

, а затем настроить таймер, вызывающий функцию каждые 30 секунд:

setInterval( LoadFinance, 30000 );

Удачи!;)

18 голосов
/ 15 декабря 2010

Вы можете установить интервал, например так:

$(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() запускается в первый раз после интервала (например, он запускается через 30 секунд после загрузки DOM здесь) ... так что для этой начальной загрузки нужно немедленно позвонить и через update().

3 голосов
/ 15 декабря 2010

Абсолютно:

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);
...