2013-03-21 2 views
1

호출 (게시되지를 다섯) :지연 I는 다음과 같이 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); 
     } 
    }); 
    } 
}; 

아약스 호출이 일을하지만, 한 번에 모두 불; 대신, 나는 한 번에 모든 것을 발사하지 않고 각각의 호출 사이에 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에 의해 지속 시간을 증가. 요청이 이후의 모든 AJAX 요청이 호출되지 것을 의미 실패하지만 당신은 또한 이전 요청의 콜백 내부의 기능을 넣을 수

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

: 같은 두 번째 보일 것이다.

+0

초를 확인해. 전에는이 솔루션을 사용해 봤지만 피곤했기 때문에 오류가 발생했다는 사실을 알지 못했습니다. (아약스 호출의 URL을 수정하면) 원래의 아이디어가 옳았습니다. 이것은 지금 나에게 두 번 나 자신에게 해결책을 찾아 내고, 그것이 내가 잠 들어서 일을하지 못한다고 생각하고, 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); 
     } 
    }); 
} 

});

OR 그래서 이제 첫 번째 아약스는 다음 통화가 발광 완료 때

$.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()를 사용하는 경우는 유 기능에 대한 시간을 언급 와트 살았어 수 있습니다 ... 유에서는 setTimeout 근무의 내부 아약스 호출을 포장 ...

setInterval("functionname()",50000);  
관련 문제