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