Запрос jQuery Ajax каждые 30 секунд

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

$(function() {
 $.getJSON(
 "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%2***%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 ответа

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

function LoadFinance()
{
 $(function() {
 $.getJSON(
 "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%2***%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 );

Удачи!;)


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

$(function() {
 function update() {
 $.getJSON("http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%2***%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().


Абсолютно:

setInterval( 
 function() {
 $.getJSON(
 "http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20yahoo.finance.quotes%20where%20symbol%2***%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);

licensed under cc by-sa 3.0 with attribution.