ajax 값 연산후 다시 받기.... 질문입니다...(왕초보...)

ajax 값 연산후 다시 받기.... 질문입니다...(왕초보...)

QA

ajax 값 연산후 다시 받기.... 질문입니다...(왕초보...)

본문

안녕하세요 선배님들 ajax질문이 있어 글을올려요..

//


<script>
var iA = new Array("<?=implode("\",\"" , $resArray);?>");
		
var cnt = iA.length; //배열길이는 6
var per1 = parseInt((1/cnt)*100);//퍼센트로 나누면 16
var per2 = per1; 
alert(cnt);
alert(per2+"%");
for(var i = 0; i < cnt ;i++){
		
		$.ajax({
			url:"deal_send_email.php",
			dateType:"html",
			data:{
				res_idx:iA[i],
				deal_idx:"<?php echo $_POST['deal_idx'] ?>"
				},
			type: "POST",	
			success: function(data){
				var text = $(data).filter("#jt_text1").html();
				if(text == "전송완료"){
					alert(per2);//현제 몃퍼센트인지 한번씩 출력해줌
					$("#jt_text").css("width",per2+"%");
					
					if(per2 >= 100){
						$("#wait_mail").html("전송이 완료 되었습니다. 감사합니다.");
						$("#wait_mail").css("color","#0b009b");
					}
				}
			},
			error: function(jqXHR, textStatus, errorThrown) 
			{
				//if fails      
			}
		})
		per2 = parseInt(per2);
		per2 += per1; // 현제 per2에 per1을 더함
		}
</script>

 

위코드처럼 ajax구문안에 success 에서 per1,per2 라는 변수를 사용하는데 다음 루프가 돌아오면 

 per2 += per1;  해주어서 16씩 증가 하게끔 할려고 코드를 작성했습니다.

그런데..

16퍼까지는 계산이 잘나와요.... 그런데 그다음부터 엉뚱한 126인가 엉뚱한 숫자가 나옵니다....

 

이것이 도대체 무슨 이유인지 잘모르겟어요...

고수님들 답변부탁드립니다....

 

이 질문에 댓글 쓰기 :

답변 3

for 안에 ajax 동작시킬 때 동기식이 아니라 비동기식입니다.

이 말은 ajax 결과가 오지 않았는데도 

per2 += per1; // 현제 per2에 per1을 더함 

는 진행된다는것이죠.

처음 동작은 값을 제대로 가져오고 

두번째 ajax 동작은 for 루프가 몇 바퀴인가 돌아서 per2 의 값이 알 수 없게 변해 있을겁니다.


       per2 = parseInt(per2);
37        per2 += per1; // 현제 per2에 per1을 더함

 

 

를 success 안으로 넣는게 맞을겁니다.


업로드 프로그래스바 로직이 필요하신것같은데..

 

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest 

 

이부분을 참고해보세요. 콜백함수에 업로드 퍼센트지가 호출되서 문법만 이해하시면

 

간단하게 쓰실수있습니다.

 

만약  업로드에 쓰이는 방식이 아닌,,

 

실시간 데이터를 꾸준히 받아와야 하는 방식이라면..

 

setInterval 함수를 통해 시간을 지정해서 정해진 반복된 시간마다 ajax통신 결과값을 받도록 하시면될것같네요.

 

1~3초 사이를 지정하면 될것으로 보입니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT