>웹 프론트엔드 >JS 튜토리얼 >Jquery 검증 원격 검증 캐싱 문제solution_jquery

Jquery 검증 원격 검증 캐싱 문제solution_jquery

WBOY
WBOY원래의
2016-05-16 16:54:391221검색

Jquery 검증은 최근 프로젝트에서 검증을 위해 사용되었습니다. 부트스트랩과 jquery 형식을 결합하는 것이 좋습니다. 하지만 원격검증의 캐시 문제로 인해 오랫동안 골치 아픈 일이 있었고, 이 플러그인을 포기할 뻔했습니다.

예:

기존 학교, 학년, 학급 개체

같은 학교는 같은 학년이 될 수 없고, 같은 학년은 같은 반이 될 수 없습니다

동일한 학년이 나올 수 없는 학교를 예로 들어 인증 시:

JS

코드 복사 코드는 다음과 같습니다:

"gradeId" : {
required : true,
min : 0,
remote: {
url: "gradeManager -checkGrade.action",
유형: "post",
dataType: "json",
data: {
'gradeId' : function() {
return $(" #gradeId ").val();
},
'schoolId' : function() {
return $("#schoolId").val();
}
}
}
}

HTML
코드 복사 코드는 다음과 같습니다.


div class="controls">
listValue="schoolName" headerKey="-1" headerValue="선택하세요. 학교">




< ;label class=" control-label" for="gradeId">grade

listValue="gradeName" headerKey="-1" headerValue="성적을 선택하세요">

< ;/div>

현재 시험학교 1과 시험학교 2가 있습니다. 그 중 시험학교 1은 1학년과 2학년으로 구성되어 있습니다.

이론적으로는 , In grade를 추가한 후 학교에서 1학년을 시험하기로 선택한 경우, 초등학교 1학년 또는 2학년을 선택할 때 원격검증에서 "이 학년은 이미 존재합니다."라는 오류가 보고됩니다.

실제로 , 처음 실행 시에도 결과가 정확합니다.

Jquery 검증 원격 검증 캐싱 문제solution_jquery그러나 이때 학교를 변경하는 경우 예를 들어 캐시 문제로 인해 테스트 학교 2를 선택하면 유효성 검사 플러그인이 작동합니다. 새로운 원격 검증을 다시 수행하지 않고 마지막 검증 결과를 직접 반환하므로 다음과 같은 뼈아픈 오류가 있습니다

Jquery 검증 원격 검증 캐싱 문제solution_jquery이것은 가장 받아들이기 어려운 문제가 아닙니다. 는 먼저 시험학교 2를 선택하고 초등학교 1학년을 선택하면 원격검증이 통과됩니다. 이때 시험학교 1을 선택해도 동일한 학년의 검증이 없으면 원격검증이 통과됩니다. 같은 학교, 실패 의미


그래서 다양한 쿼리 솔루션을 진행했습니다

원격에 "cache:false"를 추가했다는 말이 있는데, 실제 테스트에서는 해결되지 않았습니다. 문제

gradeId 값을 지우기 위해 학교 드롭다운 상자에 onchange 이벤트를 바인딩하려고 시도했지만 여전히 문제가 해결되지 않았습니다

유효성 검사 API를 확인한 결과 . valid() 메소드는 능동적으로 검증을 실행할 수 있습니다. 그러나 캐싱 문제로 인해 리모컨이 여전히 재검증을 하지 못했습니다.

또한 검증 소스 코드를 확인해보니 이전 값이 있는 것으로 나타났습니다. 값이 있으면 이전 검증 결과를 바로 반환합니다

Jquery 검증 원격 검증 캐싱 문제solution_jquery그래서 값을 삭제해 보았습니다

코드 복사 코드는 다음과 같습니다.
$("#schoolId").change(function(){
$("#gradeId").removeData("previousValue ");
});

문제가 성공적으로 해결되었습니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.