Ajax처리를 포함한 return false에서 골탕먹은 일

Ajax처리를 포함한 return false에서 골탕먹은 일

내가 하고 싶었던 것

submit 버튼을 누르면 어떤 조건일 경우에 ajax처리를 하고 나서(여기선 밸리데이션 처리) 결과에 따라 return false;로 submit처리를 중단시키고 싶었습니다.

NG

그래서 처음엔 아래와 같은 코드를 썼지만 이 코드는 return false;가 안먹고 그대로 submit 처리가 되어 버렸습니다… 음?;;

$('button[type=submit]').click(function () {

	if ($('#value').length > 0) {
		
		$.ajax({
			url: '/CheckValue',
			type: 'POST',
			async: false,
			traditional: true,
			data: { value: $('#value').val() },
			success: function (data) {
				if (!data.IsSuccess) {
					return false;
				}
			}
		});
		   
	}
}

OK

Ajax안에서는 판정 처리만 하고 return false;를 바깥으로 뺐더니 예상대로 처리되는 것을 확인 하였습니다.

$('button[type=submit]').click(function () {
	var error = false;
	if ($('#value').length > 0) {
		
		$.ajax({
			url: '/CheckValue',
			type: 'POST',
			async: false,
			traditional: true,
			data: { value: $('#value').val() },
			success: function (data) {
				if (!data.IsSuccess) {
					error = true;
				}
			}
		});
		   
		if (error ) {
			return false;
		}
	}
}

정리해 보자면 보자면 처음에 코딩한 return false;는 submit 의 처리 중단으로 처리된 것이 아니라 Ajax의 리턴값으로 처리된 모양입니다… 반성중..mm

Pie's Tech Note

생계형 개발자의 메모장

comments powered by Disqus

    rss facebook twitter github youtube mail spotify instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora