两个网址之间的jquery加载

时间:2012-05-03 03:52:36

标签: jquery

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

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

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

3 个答案:

答案 0 :(得分:1)

我有更好的建议

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

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

Demo

答案 1 :(得分:0)

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

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

答案 2 :(得分: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请求中。一旦完成,另一个再次开始,不断轮询,直到我们改变到不同的页面。