본문 바로가기

Dev-/java script, jQuery, Ajax

jQuery ajax 동기식으로 사용하기

ajax를 사람이 직관적으로 생각했을때 그대로 사용하면 아래와 같은 문제가 발생한다.


가령 아래와 같은 경우이다.

/**
* 폼 전송
*/
function submitForm(formClass) {
..........


// ajax 아이디 중복검사
if (validationResult == true)
/**
* 비동기식 ajax 함수
* async: true(defalut)
*/
checkIdDupl();

..........

// 최종 폼 전송
if ((validationResult = setFinalValidationResult(formClass)) == true) {
/**
* checkIdDupl()가 끝나기 전에 먼저 실행되어버린다.
* --> 코드가 복잡해지면 파악하기 힘듦
*/
printFormDatas(formClass);
}
}

--> 폼을 먼저 보내버린 후, 중복체크 함수 실행이 끝난다.



사람이 생각하는 것과 같게 하기 위해서는 ajax 파라미터 asyncfalse로 설정해준다. (default: true)

function checkIdDupl() {
var id = $('#id2').val();

$.ajax({
type: 'post',
url: '/member/checkIdDupl/' + id,
data: JSON.stringify({}),
dataType: 'json',

/**
* 비동기식 -> 동기식으로 바꿔준다.
*/
async: false,

......

--> 원하는 결과가 나온다.