2010-12-15 61 views
12

J'ai ce code, mais les valeurs peuvent changer pendant que quelqu'un est sur mon site. Je devrais mettre à jour le div #finance toutes les 30 secondes environ. Cela peut-il être fait?jQuery Ajax demande toutes les 30 secondes

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

N'oubliez pas de choisir une réponse. Revenez à quelques-unes des quelque 50 questions que vous avez posées et acceptez-les également. –

+0

Excuses. Ça ira. Je suis tous pris pour le moment lol –

Répondre

30

Vous pouvez mettre votre code dans une fonction distincte comme ceci:

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

Et puis mettre en place une minuterie appelant la fonction toutes les 30 secondes:

setInterval(LoadFinance, 30000); 

Bonne chance! ;)

+1

Ne pas passer une chaîne à 'setInterval()', utilisez une référence directe! 'setInterval (LoadFinance, 30000);' –

+0

ouch .. 'setInterval (LoadFinance, 30000);' éviter le code texte qui doit être évalué. –

+0

Vous avez raison, une référence directe serait une approche plus agréable/plus propre. Mais ma suggestion ci-dessus ne compromet pas la sécurité ... – Alex

17

Vous pouvez le régler sur un intervalle, comme celui-ci:

$(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() feux la première fois après l'intervalle (par exemple, il passe d'abord 30 secondes après le chargement DOM ici) .. Donc, pour cette charge initiale, vous devez toujours l'appeler immédiatement via update().

3

Absolument:

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