2

我有 5 个看起来像这样的 ajax 调用(没有发布所有五个):

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 秒。

我试过使用'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。所以第二个看起来像:

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);

You could also put the functions inside the previous request's callback although a request fail would mean that all subsequent AJAX requests wouldn't get called.

于 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

You can use setInterval() for this. When using setInterval() it can cal the wat u mention the time for function...u check it out the seconds ...

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