>웹 프론트엔드 >JS 튜토리얼 >onsubmit이 form_jquery의 유효성을 검사할 때 ajax의 반환 false를 사용하는 잘못된 문제에 대한 간략한 분석

onsubmit이 form_jquery의 유효성을 검사할 때 ajax의 반환 false를 사용하는 잘못된 문제에 대한 간략한 분석

WBOY
WBOY원래의
2016-05-16 17:29:211016검색
코드 복사 코드는 다음과 같습니다.

/**
* 양식 제출 확인
**/
함수 onSubmit() {
if($('#name').val().length<2){
Alert("이름은 한자 2자 이상이어야 합니다.");
return false ;
}
var t = new Date().getTime();
$.ajax({
type: "POST",
url: "/users/checkrepeat/",
데이터: "name=" $('#name').val() "&time=" t,
성공:function(res){
if(res == 'exists'){
Alert(" 이미 존재하는 이름입니다. 수정해주세요.");
                                                                                                         ; 이유:


1. ajax 중에 false를 반환하는 함수는 onsubmit()과 동일한 함수가 아닙니다. ;
2. ajax가 실행될 때 async의 기본 설정 값은 true입니다. 이 경우 비동기 모드는 ajax가 요청을 보낸 후 서버가 반환되기를 기다리는 동안 프런트 데스크가 계속해서 실행된다는 것을 의미합니다. ajax 블록 뒤에 있는 스크립트는 서버가 올바른 결과를 반환할 때까지 실행되지 않습니다. 즉, 이 스레드는 두 개의 스레드로, ajax 블록 뒤의 스레드와 ajax 블록 뒤의 스크립트입니다. (다른 스레드).

수정된 코드:

코드 복사

코드는 다음과 같습니다.
/** * 양식 제출 확인 **/함수 onSubmit(){ if($('#name').val().length<2){ Alert(" name 한자 2자 이상이어야 합니다. "); Return false;
}
var Flag = TRUE;
var T = New date (). Gettime ();
$ . ajax ($ .ajax ( {
유형: "POST",
async:false, // 동기화 방법 설정
캐시:false,
url: "/users/checkrepeat/",
data: "name= " $('#name').val() "&time=" t,
성공:function(res){
if(res == 'exists'){
Alert("이름이 이미 존재합니다. 수정하세요.");
FLAG = FALSE;
}
})
if (! Flag)
return false;
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.