2010-12-15 6 views
12

Ich habe dieses Stück Code, aber die Werte können sich ändern, während sich jemand auf meiner Website befindet. Ich müsste das #finance div alle 30 Sekunden oder so aktualisieren. Kann das gemacht werden?jQuery Ajax-Anfrage alle 30 Sekunden

$(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

Vergessen Sie nicht, eine Antwort auszuwählen. Bitte gehen Sie zurück zu einigen der etwa 50 Fragen, die Sie gestellt haben, und akzeptieren Sie auch einige Antworten darauf. –

+0

Entschuldigung. Wird besorgt. Ich nehme alle im Moment lol –

Antwort

30

Sie Ihren Code in einer separaten Funktion so sagen kann:

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

Und dann richten Sie einen Timer, um die Funktion alle 30 Sekunden Aufruf:

setInterval(LoadFinance, 30000); 

Viel Glück! ;)

+1

Übergeben Sie keine Zeichenfolge an 'setInterval()', verwenden Sie eine direkte Referenz! 'setInterval (LoadFinance, 30000);' –

+0

autsch .. 'setInterval (LoadFinance, 30000);' Vermeiden Sie Text-Code, der ausgewertet werden muss. –

+0

Sie haben Recht, eine direkte Referenz wäre ein schöner/sauberer Ansatz. Aber mein Vorschlag oben kompromittiert Sicherheit nicht ... – Alex

17

Sie es auf einem Intervall einstellen, wie folgt aus:

$(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() Feuer zum ersten Mal nach das Intervall (zB läuft er zunächst 30 Sekunden nach dem DOM lädt hier) .. Für die erste Ladung müssen Sie sie auch sofort über update() anrufen.

3

Absolut:

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