도쿄사는 외노자

AJAX 내부에서의 return 문제 본문

Tech/JavaScript

AJAX 내부에서의 return 문제

Enrai 2015. 6. 19. 17:29

코드 관리 테이블 마스터 작성 중,

DB와 연계하여, 입력된 코드의 중복 검사를 할 필요가 있었음.


var chkBCOverlap = false;

를 선언 후,

중복 체크를 해 가며 최종적으로는

chkBCOverlap = true;

로 바꾸고

return chkBCOverlap;

를 하고 싶었으나...


Ajax로 데이터를 받아온 이후, 

1
2
3
4
5
success: function(data){
          if(조건){
            chkBCOverlap = true;
           }
         }
cs

와 같은 형태로 선언을 했더니

이 이후로 진행이 되지 않는 문제가 발생하였다.

일단 JSON이 비동기식이기 때문에,

Ajax단에서의 return이 움직이기 전에, 

이미 그 아래의 코드가 별도로 진행되어 버린 것이다.


이를 해결하기 위해서

ajax단을 따로 분리하여 function을 만들어, 

거기서 return을 하는 방향으로 변경.


이래 해봐야 ajax의 비동기식 방식은 변하지 않는다!


그래서 더 알아보니...

그냥 Ajax내부에, 동기식-비동기식 조절 가능한 방법이 있었다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
$.ajax({
    url: '~~~',
    type: 'POST',
    data: {
        A: A
    },
    async: false,
    dataType: 'json',
    beforeSend: function(XMLHttpRequest) {
    },
    success: function(data){
        // 内容
    }
});
cs


동기화 : async를 false로

비동기화 : default

이걸로 해결되었다...



'Tech > JavaScript' 카테고리의 다른 글

jQuery Sparklines  (0) 2016.02.16
Javascript Comma  (0) 2016.02.15
테이블 클릭 이벤트  (0) 2016.01.13
jQuery Class제어  (0) 2015.07.29
Javascript에서 페이지 내의 테이블 객체 다루기  (0) 2015.06.24