등록을 할 때 전자 메일 주소가 이미 계정과 연결되어 있는지 즉시 확인하고 싶습니다. 따라서 jQuery 유효성 검사 플러그인을 사용하고 서버에 동기식 ajax 요청을 보냅니다. 그건 잘 작동합니다.
시간 제한이 발생할 경우 어떻게되는지 테스트하기 위해 Ajax 요청에 대해 5ms의 시간 제한을 선택했습니다. 서버 측 (PHP 파일)에서 프로그램 실행은 sleep (5)를 사용하여 5 초 지연됩니다.
그러나 5ms 후에 시간 초과 오류가 발생하는 대신 성공 콜백은 5 초 후에 서버에서 올바른 데이터를 반환합니다.
따라서 ajax timeout 매개 변수가 작동하지 않는 것 같습니다. 이 내 코드입니다 : 내가 다른 기사 코드를 여러 번 확인했지만 어떤 문제가 있는지 알 수 없습니다jQuery : 'timeout'오류가 발생하지 않았습니다. 오류 콜백이 실행되지 않습니다.
$.validator.addMethod('ist_ProvEmail_noch_frei',function(value, element) {
var bValidEmail;
var jqXHR = $.ajax({
url: 'ajax/IstProvEmailVergeben.php',
data: {
email: value
},
success : function(data, textStatus, jqXHR) {
console.log("success1: " + textStatus);
// some code
},
error : function(jqXHR, textStatus, errorThrown) {
console.log("textStatus1: " + textStatus + ", type: " + typeof textStatus);
// some code
bValidEmail = true; // to prevent jQueryValidation from showing an error message
},
method: "POST",
async: false,
timeout: 5, // 5 ms
dataType: 'json'
});
console.log("jqXHR.responseText: " + jqXHR.responseText);
return bValidEmail;
}, 'This email address is already associated with an account.');
.
아무도 아이디어가 있습니까? 헨리
가 타임 아웃'비동기 작동하지 않습니다 생각 만 수 : FALSE ', 그것은 문서화 된 기능은 아니지만. 'async : true'를 시도하십시오. –
어쨌든 항상 'async : true'를 사용해야합니다. –
async : false를 사용해야합니다. 그렇지 않으면 jQueryValidate 플러그인이 올바른 답을 얻지 못합니다. 즉, bValidEmail은 서버에서 오는 정보에 의존합니다. 비동기 요청은 bValidEmail을 정의되지 않은 것으로 반환합니다. – Henry