Javascript 设置json调用的间隔以重新加载新图像

Javascript 设置json调用的间隔以重新加载新图像,javascript,jquery,Javascript,Jquery,我正在尝试设置从Flickr API重新加载新图像的时间间隔 为了使用setInterval获取新图像,我需要添加什么 这是我的代码: $(document).ready(function(){ $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", { tagmode: "any", format: "json" }, f

我正在尝试设置从Flickr API重新加载新图像的时间间隔

为了使用
setInterval
获取新图像,我需要添加什么

这是我的代码:

$(document).ready(function(){
    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
    {
        tagmode: "any",
        format: "json"
    },
    function(data) {
        var rnd = Math.floor(Math.random() * data.items.length);

        var image_src = data.items[rnd]['media']['m'].replace("_m", "_b");
        $('.main').css('background-image', "url('" + image_src + "')");
    });
});

是否要以设定的间隔加载不同的随机图像

我认为这应该适合你:

var loadNewImage = function() {
  var rnd = Math.floor(Math.random() * data.items.length);
  var image_src = data.items[rnd]['media']['m'].replace("_m", "_b");
  $('.main').css('background-image', "url('" + image_src + "')");
}

setInterval(loadNewImage(), 3000);
这将每3秒(3000毫秒)设置一个新的背景图像,因此您可能需要更改间隔时间,或者将其与顶部的var连接,如果您想:

var imageInterval = 10000;
setInterval(loadNewImage(), imageInterval);

我会使用
setTimeout
而不是
setInterval
,以防由于网络延迟而获取映像所需的时间超过[interval]秒

$(document).ready(function() {
  var INTERVAL_IN_MS = 1000; // wait 1 second

  function getImage() {
    $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?", {
        tagmode: "any",
        format: "json"
      }, function(data) {
           var rnd = Math.floor(Math.random() * data.items.length);
           var image_src = data.items[rnd]['media']['m'].replace("_m", "_b");
           $('.main').css('background-image', "url('" + image_src + "')");

        // start the timeout countdown only after the previous image has been fetched and displayed
        window.setTimeout(getImage, INTERVAL_IN_MS);
      });
  }

  window.setTimeout(getImage, INTERVAL_IN_MS);
});

使用
loadNewImage
而不是
loadNewImage()
作为
setInterval
的第一个参数
loadNewImage()
执行该函数,并使用其返回值(在本例中未定义)作为
setInterval
的第一个参数,这是不正确的。获取未捕获的语法错误:对于var loadNewImage=function()行,意外的令牌变量,我没有得到这样的错误。你能粘贴你的代码吗?