늅늅
545
2019-07-01 11:25:34 작성 2019-07-01 11:29:05 수정됨
4
187

비동기 jquery @.ajax for 반복 호출 질문


안녕하세요~ 늅늅입니다~~


소스 입니다.


	var Sucnt = 0 ;	//성공 횟수 카운터 변수
	var Facnt = 0 ;	//실패 횟수 카운터 변수
	
	for(var i=0; i<10; i++){
		$.ajax({
			  url: "/test.do",
			  data: {"test":i},
			  method:'post',
			  dataType: 'json',
			//async:false,
			  contentType: "application/x-www-form-urlencoded;charset=utf-8",
			  beforeSend : function(jqXHR){
					$('#progressbar').show();  //로딩바 
				},
			  complete : function(){
					$('#progressbar').hide();  //로딩바
				},
			  success: function(result) {
				  if(result.code =="0000")Sucnt++;
				  if(result.code !="0000")Facnt++;
			  },
			  error:function(result,status,err){
				  alert("에러발생"+result.code);
				
			}
		});
	}
	$('#progressbar').hide();  //로딩바
	alert( Sucnt + "건 작업이 정상 처리 되었습니다."); 
	alert( Facnt + "건 작업이 실패 처리 되었습니다."); 

상황 :

성공 -> 7건

실패 -> 3건


---- 

제가원하는 결과는 아래인데

alert("7건 작업이 정상 처리 되었습니다.");

alert("3건 작업이 실패 처리 되었습니다.");

---

실제로는 

alert("0건 작업이 정상 처리 되었습니다.");

alert("0건 작업이 실패 처리 되었습니다.");

결과가 나옵니다. 비동기 처리라 당연합니다.


ajax 옵션을 

async:false,를 주면 제가 원하는 결과가 나오나

그러면 $('#progressbar').show(); 진행바가 작동을 안합니다.(정확히는 작동 안하는것 처럼 보이는거 겠죠)


위 예제는 샘플이라 10번 반복이지만 실 코드는 100번 이상 반복 할수도 있습니다.

1번 반복 할때 대량 1초 정도 시간이 걸리고

ajax 반복 중 진행바 표시를 해주면서 비동기로 처리 할수 있는 방법 있을까요?



번외로 몇번째 진행 상태까지 표시 할 수 있을까요? 몇번째 진행중인지 확인 되면

화면에 뿌리수 있을것 같은데요.





0
0
  • 답변 4

  • 더미
    12k
    2019-07-01 14:20:57
    $('#progressbar').show();  //로딩바 
    for(var i=0; i<10; i++){
    $.ajax({
      url: "/test.do",
      data: {"test":i},
      method:'post',
      dataType: 'json',
      async:false,
      contentType: "application/x-www-form-urlencoded;charset=utf-8",
      success: function(result) {
      if(result.code =="0000")Sucnt++;
      if(result.code !="0000")Facnt++;
      },
      error:function(result,status,err){
      alert("에러발생"+result.code);
    }
    });
    }
    $('#progressbar').hide();  //로딩바
    1
  • 늅늅
    545
    2019-07-01 16:01:17

    더미

    로딩바 안나와요 ㅠㅠ

    0
  • 사는게힘듭니다
    2019-07-01 21:24:12

    질문과는 관련이 없는 답변이지만

    변수네이밍은 지켜주셨으면좋겠습니다.

    1
  • 더미
    12k
    2019-07-02 10:48:38
    $('#progressbar').show();  //로딩바 
    for(var i=0; i<10; i++){
    $.ajax({
      url: "/test.do",
      data: {"test":i},
      method:'post',
      dataType: 'json',
      async:false,
      contentType: "application/x-www-form-urlencoded;charset=utf-8",
      success: function(result) {
      if(result.code =="0000")Sucnt++;
      if(result.code !="0000")Facnt++;
      },
      error:function(result,status,err){
      alert("에러발생"+result.code);
    },
    complete : function(){
    if(i === 9 ){
    $('#progressbar').hide();  //로딩바
    }
    }
    });
    }
    1
  • 로그인을 하시면 답변을 등록할 수 있습니다.