0

我正在尝试以不同的时间间隔从 2 个不同的 URL 加载内容。理想情况下,我想加载一个 url 等待 10 秒加载另一个并一遍又一遍地重复。这就是我所拥有的,但它不能正常工作。它不断地来回快速加载网址,我无法阅读内容

setInterval(function(){
          $('#ticker').load('misc.php?users=10');
      }, 10000);

      setInterval(function(){
          $('#ticker').load('misc.php?news=10');
      }, 20000);
4

3 回答 3

1

我有更好的建议

var links = ['misc.php?users=10', 'misc.php?news=10'];
var pointer = 0;

setInterval(function() {
     $("#ticker").load(links[pointer++ % links.length]);
}, '10000');

演示

于 2012-05-03T04:04:32.557 回答
0

您是否设置了超时,因为您想确保首先读取第一个 URL,然后按顺序读取第二个 URL?如果是这样的话,我可能会建议一个新的模式,就像这样......

(function($) {
    var fn1 = function () {
        $.ajax({ 
          url: 'misc.php?users=10'
        }).done(function (data) {
          // update #ticker html with new user data
        }).always(function () {
          fn2(); // whether we succeed or not, we move on to fn2
        });
      }
      , fn2 = function () {
        $.ajax({
          url: 'misc.php?news=10'
        }).done(function (data) {
          // update #ticker html with new news data
        }).always(function () {
          fn1(); // whether success or failure we start over on fn1
        });
      };

      // ... somewhere down the line ...

      $('#ticker').on('load', fn1); // start polling
})(jQuery);

我们在这里所做的是以某种同步的方式进行异步调用,而不需要混乱的超时或间隔调用。这可以维护 URL 的顺序,而不会在 AJAX 请求中重叠或纠缠在一起。一个完成后,另一个重新开始,不断轮询,直到我们切换到不同的页面。

于 2012-05-03T05:30:57.980 回答
0

您可以尝试使用.load的回调函数。

$('#ticker').load('misc.php?users=10', function(){
    setInterval( function(){ 
        $('#ticker').load('misc.php?news=10'); 
    }, 10000 );
});
于 2012-05-03T03:58:37.107 回答