Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery Ajax请求每30秒一次_Jquery_Ajax_Yql - Fatal编程技术网

jQuery Ajax请求每30秒一次

jQuery Ajax请求每30秒一次,jquery,ajax,yql,Jquery,Ajax,Yql,我有这段代码,但是当有人在我的网站上时,值可能会改变。我需要每隔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=ht

我有这段代码,但是当有人在我的网站上时,值可能会改变。我需要每隔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"
        });
});

您可以将其设置为间隔,如下所示:

$(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();
});
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" 
        });
    });
}
在间隔后第一次激发(例如,在此处加载DOM后第一次运行30秒)。。。因此,对于该初始加载,您仍然需要通过
update()

立即调用它:

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

您可以将代码放在单独的函数中,如下所示:

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

不要将字符串传递给
setInterval()
,请使用直接引用<代码>设置间隔(LoadFinance,30000)哎哟<代码>设置间隔(LoadFinance,30000)避免需要计算的文本代码。@Alex-事实上,确实如此。如果可以避免的话,千万不要传递字符串。我可以随时重写你的函数,任何全局定义的函数都可以工作。如果直接引用在它自己的范围内,则不能重写它。如果您使用字符串是出于安全考虑……您可以将其反向使用。@Nick-实际上,我通常在不需要参数的情况下使用直接引用,我在上面的建议中选择字符串的原因是“一时冲动”—事情……)但是我明白你关于函数范围的安全性的观点。我会记住的。谢谢你的课!到目前为止,应该知道在这种情况下使用
setInterval
是一个非常糟糕的主意。不要忘记选择答案。请回到你问过的大约50个问题中,并接受一些答案。道歉。行。我现在很忙,哈哈