2

次のような 5 つの ajax 呼び出しがあります (5 つすべてを投稿するわけではありません)。

tabTest = {
BASE_URL : 'http://localhost/project/',
getPics : function(){

    $.ajax({
        type : 'GET',
        url : this.BASE_URL +'js/image1.js',
        dataType : "json",
        async: false,
        success: function(data){
            var pic = data.images.image[0].image_one;
                $('#pic1 img').attr("src", pic);
        }   
    });
    $.ajax({
        type : 'GET',
        url : this.BASE_URL +'js/image2.js',
        dataType : "json",
        async: false,
        success: function(data){
            var pic = data.images.image[0].image_two;           
                $('#pic2 img').attr("src", pic);
        }   
    });
   }
};

ajax 呼び出しは機能しますが、すべて同時に起動します。代わりに、各呼び出しの間に遅延を設定して、一度にすべてを起動するのではなく、各呼び出しの間に 5 秒間隔で 1 回だけ (別の関数で発生するクリック時に) 順番に起動する必要があります。

「setTimeout」を使用してみましたが、まだ機能していません。これをどのように進めるか本当にわかりません。

4

3 に答える 3

3

AJAX 呼び出しを独自のものにするとsetTimeout()、それが機能しない理由はありません。

setTimeout(function(){
    $.ajax({
        type : 'GET',
        url : this.BASE_URL +'js/image1.js',
        dataType : "json",
        async: false,
        success: function(data){
            var pic = data.images.image[0].image_one;
            $('#pic1 img').attr("src", pic);
        }   
    });
}, 5000);

次に、通話ごとに期間を 5000 ずつ増やします。したがって、2番目は次のようになります。

setTimeout(function(){
    $.ajax({
        type : 'GET',
        url : this.BASE_URL +'js/image2.js',
        dataType : "json",
        async: false,
        success: function(data){
            var pic = data.images.image[0].image_one;
            $('#pic2 img').attr("src", pic);
        }   
    });
}, 10000);

リクエストが失敗すると、後続のすべての AJAX リクエストが呼び出されないことを意味しますが、前のリクエストのコールバック内に関数を配置することもできます。

于 2013-03-21T11:58:10.657 に答える
1

前の成功コールバック関数に次の ajax 呼び出しを追加してみてください。

$.ajax({
type : 'GET',
url : this.BASE_URL +'js/image1.js',
dataType : "json",
async: false,
success: function(data){
    var pic = data.images.image[0].image_one;
        $('#pic1 img').attr("src", pic);
   $.ajax({
      type : 'GET',
      url : this.BASE_URL +'js/image2.js',
      dataType : "json",
      async: false,
      success: function(data){
          var pic = data.images.image[0].image_two;           
              $('#pic2 img').attr("src", pic);
      }   
  });
}   

});

また

$.ajax({
        type : 'GET',
        url : this.BASE_URL +'js/image1.js',
        dataType : "json",
        async: false,
        success: function(data){
            var pic = data.images.image[0].image_one;
                $('#pic1 img').attr("src", pic);
            call2();
        }   
    });

function call2(){
    $.ajax({
        type : 'GET',
        url : this.BASE_URL +'js/image2.js',
        dataType : "json",
        async: false,
        success: function(data){
            var pic = data.images.image[0].image_two;           
                $('#pic2 img').attr("src", pic);
        }   
    });
}

したがって、最初の ajax が完了すると、次の呼び出しが発生します。

于 2013-03-21T11:56:52.457 に答える
0

これに使えますsetInterval()。それを使用setInterval()するときは、機能の時間を言及することができます...秒をチェックしてください...

setInterval("functionname()",50000);    
于 2013-03-21T12:00:52.883 に答える