ajax를 사람이 직관적으로 생각했을때 그대로 사용하면 아래와 같은 문제가 발생한다.
가령 아래와 같은 경우이다.
/**
* 폼 전송
*/
function submitForm(formClass) {
..........
// ajax 아이디 중복검사
if (validationResult == true)
/**
* 비동기식 ajax 함수
* async: true(defalut)
*/
checkIdDupl();
..........
// 최종 폼 전송
if ((validationResult = setFinalValidationResult(formClass)) == true) {
/**
* checkIdDupl()가 끝나기 전에 먼저 실행되어버린다.
* --> 코드가 복잡해지면 파악하기 힘듦
*/
printFormDatas(formClass);
}
}
--> 폼을 먼저 보내버린 후, 중복체크 함수 실행이 끝난다.
사람이 생각하는 것과 같게 하기 위해서는 ajax 파라미터 async를 false로 설정해준다. (default: true)
function checkIdDupl() {
var id = $('#id2').val();
$.ajax({
type: 'post',
url: '/member/checkIdDupl/' + id,
data: JSON.stringify({}),
dataType: 'json',
/**
* 비동기식 -> 동기식으로 바꿔준다.
*/
async: false,
......
--> 원하는 결과가 나온다.
'Dev- > java script, jQuery, Ajax' 카테고리의 다른 글
캘린더(달력) 세팅 함수 - 자바 스크립트 (0) | 2019.04.20 |
---|---|
자바스크립트 replaceAll을 하고 싶을때 (0) | 2019.04.01 |
jquery append() 이벤트가 쌓일 때 ,preventDefault()가 작동하지 않을 때(preventDefault() is not working) (0) | 2019.03.08 |
Ajax를 사용하다가.. (0) | 2018.08.03 |
.submit()이 작동되지 않을 때 (0) | 2018.08.02 |