0

2つの異なるURLから異なる間隔でコンテンツを読み込もうとしています。理想的には、一方のURLをロードして10秒待ってから、もう一方のURLをロードし、何度も繰り返します。これは私が持っているものですが、正しく機能していません。常にURLをすばやく前後にロードしているので、コンテンツを読むことができません

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

.loadのコールバック関数を使用してみることができます。

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

最初のURLが最初に読み取られ、2番目のURLが2番目に読み取られるようにするために、タイムアウトを設定していますか?もしそうなら、私はそのような新しいパターンを提案するかもしれません...

(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リクエストに巻き込まれたりすることなく、URLの順序が維持されます。そして、一方が終了するとすぐにもう一方が再開し、別のページに移動するまで常にポーリングします。

于 2012-05-03T05:30:57.980 に答える