2010-12-15 21 views
12

Tengo este código, pero los valores pueden cambiar mientras haya alguien en mi sitio. Necesitaría actualizar el div #finance cada 30 segundos más o menos. Se puede hacer esto?jQuery Solicitud Ajax cada 30 segundos

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

No olvides dar una respuesta. Regrese a algunas de las aproximadamente 50 preguntas que hizo y acepte algunas respuestas sobre ellas también. –

+0

Disculpas. Hará. Estoy todo tomar en el momento lol –

Respuesta

30

Usted puede poner su código en una función separada de esta manera:

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

y luego configurar un temporizador de llamar a la función cada 30 segundos:

setInterval(LoadFinance, 30000); 

¡Buena suerte! ;)

+1

No pasar una cadena a 'setInterval()', use una referencia directa! 'setInterval (LoadFinance, 30000);' –

+0

ouch .. 'setInterval (LoadFinance, 30000);' evita el código de texto que necesita ser evaluado. –

+0

Tiene razón, una referencia directa sería un enfoque más agradable/más limpio. Pero mi sugerencia anterior no compromete la seguridad ... – Alex

17

Se puede establecer en un intervalo, como esto:

$(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() incendios primera vez después de el intervalo (por ejemplo, primero ejecuta 30 segundos después de que las cargas DOM aquí) .. Así que para esa carga inicial, igual debe llamar de inmediato también a través del update().

3

Absolutamente:

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