반응형
php로 폼 내용을 전송하는 경우, 폼 스크립트 안에 ajax를 넣어 값을 체크한 뒤에 문제가 없는 경우 전송하는 스크립트를 짜는데, ajax success 안에 바로 return false를 쓰니 제대로 실행되지 않고 그냥 submit이 되어버렸다.
해결 방법은 ajax 구문안에 return false를 직접적으로 쓰기보다는 스크립트 상단 부분에 rtn=false;를 정의한뒤
ajax 구문안에서 실패한 경우 rtn = false; 성공한 경우 rtn = true 값을 넣어주고 스크립트 맨 마지막에 return rtn을 호출하면 된다. 이때 ajax 구문안에 async: false를 꼭 넣어줘야한다.
function checkform() {
var rtn = false; // 변수선언
$.ajax({
type: "POST",
url: "xxx.php",
async: false, // 꼭 넣어줘야함
success: function(result) {
if (result) {
rtn = true; //성공한 경우
} else {
rtn = false; //실패한 경우 (return false)
}
},
error: function() {
rtn = false; //실패한 경우 (return false)
}
});
return rtn; //변수처리
}
[예시 적용 코드]
function checkform(f) {
var id = $("#id").val();
var name = $("#name").val();
var rtn = false;
$.ajax({
type: "POST",
url: "xxx.php",
data: {
id : id,
name : name
},
async: false,
success: function(result) {
if (result) {
alert(name +"은(는) 이미 등록된 이름입니다.");
rtn = false;
} else {
rtn = true;
}
},
error: function() {
rtn = false;
}
});
return rtn;
}
[함께보면 좋은 글]
반응형
'개발 > js·jquery' 카테고리의 다른 글
[오류] Swiper 오류 해결 Uncaught TypeError: Failed to execute 'getComputedStyle' on 'Window': parameter 1 is not of type 'Element'. (2) | 2023.02.08 |
---|---|
[jQuery] 모바일/PC 디바이스 구분하여 스크립트 다르게 보여주기 (2) | 2022.12.07 |
Swiper 슬라이더 익스플로러에서 작동 안될 때 해결 방법 (2) | 2022.10.25 |
jquery | .not() 특정 선택자만 제외하기 (2) | 2022.10.18 |
[jQuery] Owl Carousel 여백 없애기 (2) | 2022.02.28 |
ajax 순서대로 여러번 사용하기 (Promise, then) (2) | 2022.02.17 |
[jQuery] 반응형 bxSlider (2) | 2021.12.23 |
onclick 현재창/새창/팝업창 페이지 이동 (2) | 2021.12.22 |