remote
메서드를 jQuery Validation으로 사용하여 사용자 이름이 이미 시스템에 있는지 확인하고 있습니다. does_user_exist.php
스크립트는 사용자가있는 경우 1
을 반환합니다.jQuery의 오류 응답이 작동하지 않습니다.
$registration.find(".username").each(function() {
var $this = $(this);
$this.rules('add', {
remote: {
url: "does_user_exist.php",
type: "post",
dataType: "json",
data: {uname: function(){ return $this.val(); } },
async: false,
success: function (data) { //returns 1 if user exists
if (data) {
console.log("false!");
return "Sorry, that user already exists." //doesn't work
//return false; //doesn't work
//return data; //doesn't work
//return {"string"}; //doesn't work
//return {0: "string"};//doesn't work
} else {
console.log("true!");
return true;
}
}
},
messages: {
remote: jQuery.format("{0}") //doesn't work
// remote: "Simple string doesn't work here either"
}
});
});
제게는 오류 메시지가 표시되지 않습니다. 내 console.log
출력에서 사용자가있을 때 false!
을 올바르게 기록하지만 오류 메시지가 나타나지 않는 것을 볼 수 있습니다.
주석 처리 된 줄에서 알 수 있듯이, 내가 어떻게 든 잘못되었다고 추측하고 추측을 통해 잘못된 작업을 수행하려고 시도했습니다. 잘못된 형식이지만 성공하지 못했습니다.
편집 3 : 변경 될 백엔드 응답을 가져올 수있었습니다. PHP는 이제 true
/false
으로 인코딩 된 JSON을 보내고 있습니다. 우리는 다음과 같은 방법으로 백엔드 응답을 전송 시도하지만, 플러그인은 우리가하는 일에 상관없이 그것을 잡는하지하지 않는 것 :
json_encode(false)
json_encode('["false"]')
json_encode("false")
json_encode(["false"])
"false"
false
NULL
""
0
를 지금까지 내가 문서, 다음 중 하나를 기반으로 말할 수있는 근무해야합니다
응답이 JSON으로 평가하고 유효한 요소 에 대한 진실해야하고 할 수있는 모든 거짓 정의되지 않았거나 기본 메시지를 사용하여 잘못된 요소에 대한 널 (null);
참고로이 질문에 대한 대답은 this issue과 관련이 있습니다. PHP 스크립트는 항상 올바르게 true
또는 false
을 반환
$registration.find(".username").each(function() {
var $this = $(this);
remote: {
url: "does_user_exist.php",
type: "post",
data: {entityExistence: function(){return $this.val();} },
success: function(data){ console.log(data); }
},
messages: {
remote: "Sorry, that username is not available."
}
});
: 여기
는 수정 된 코드입니다. 설명서에 따르면true
을 제외한 모든 항목에서 오류 메시지가 표시됩니다. 그러나 오류 메시지가 나타나지 않습니다. 다른 체크가 잘 작동하고 있기 때문에 오류 메시지가 작동하고 있음을 알고 있습니다 (예 :
rangelength
, 붙여 넣기 된 코드에서 제거하여 명확하게 나타남).
원격 메소드에 대한 설명서를 읽지 않았습니까? 그것은 당신의 서버 코드에 의해 반환되어야하는 것을 명확하게 설명합니다. – Sparky
@ Sparky : 그런데 예 (특히이 부분) (http://jqueryvalidation.org/remote-method/)를 읽었습니다 : _ 응답은 JSON으로 평가되며 유효한 요소에 대해 true 여야합니다 기본 메시지를 사용하여 잘못된 요소에 대해 false, undefined 또는 null 일 수 있습니다. 또는 문자열, 예를 들어. "그 이름은 이미 취해진 상태입니다. 대신에 peter123을 시도해보십시오."오류 메시지로 표시하려면 – brentonstrine
또한 인용 : _ "유효한 요소에 대해"true 여야합니다. "_ ~ 사용자가 존재하지 않을 때 'true'를 반환합니까? 귀하의 '1'은 문자열 또는 '사실'로 해석됩니까? 우리는 이미 '1'이 _ "false, undefined 또는 null"이 아니라는 것을 알고 있습니다. _ – Sparky