2013-03-21 2 views
1

У меня есть 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); 
     } 
    }); 
    } 
}; 

Аякса звонки работают, но они все огонь сразу; вместо этого мне нужно установить задержку между ними, чтобы они не запускали все сразу, а скорее только один раз (после клика, который происходит в другой функции) с 5 секундами между каждым вызовом.

Я пробовал использовать 'setTimeout', но он еще не сработал. Я действительно не уверен, как это сделать.

ответ

2

Если вы поставите ваш 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); 

Вы также можете поместить функции обратного вызова внутри предыдущего запроса в хотя запрос не в состоянии будет означать, что все последующие запросы AJAX не дозвонились.

+0

Обертывания АЯКСА звонков внутри SetTimeout работал. Я уже пробовал это решение, но, поскольку я так устал, я не вижу, чтобы какие-либо ошибки, которые я получал, были незначительными по характеру (настройка URL-адреса в вызове ajax) и моя оригинальная идея была правильной. Это случилось со мной сейчас дважды, где я нахожу решение самостоятельно, думаю, что это не работает, потому что я полусон, пост на SOF и кто-то вроде вас указывает на очевидное. Спасибо, что проснулся, показывая мне ошибки моих путей! – max7

+1

Без проблем Макс, рад помочь. – George

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

Так что теперь, когда первая Аякса будет завершена, то следующий вызов будет стрелять.

0

Для этого можно использовать setInterval(). При использовании setInterval() может кал Ват у упоминают время для функции ... у проверить его секунду ...

setInterval("functionname()",50000);  
Смежные вопросы