2011-09-14 3 views
1

는 내 질문은 내가 사용하고 더 공정 기반의 코드보다 기반으로하지만 (일부 불일치 우연히 어쩌면과) 공유 :jQuery를, 사용자 정의 검증 및 AJAX

  • jQuery를 1.6.2을
  • jQuery를하는 검증 1.8.1
그래서 여기

간다 ...

사용자 지정 유효성 검사 추가 (사용이 addMethod) (대신에 내장 된 원격 호출) 서버에 전화를해야합니다, 당신은해야합니다 동기식으로으로 응답하도록 설정하면 결과가 서버에서 반환되기 전에 메서드가 완료되기 때문입니다. 이 올바른지?

또한이 작업을 수행하는 주요 방법은 async false 또는 deferred.promise()를 사용하여 $ .ajax 요청을 호출하는 것입니다. 이 올바른지?

저는 getJSON을 사용하여 사용자 정의 유효성 검사와 관련된 질문을하는 많은 게시물을 보았습니다. 응답은 일반적으로 "다시는 아무것도 반환하지 않습니다"라고 말하지만 포인트를 놓치지 않습니다 - 응답도 아닙니다. 늦었 니?

답변 해 주셔서 감사합니다.

답변

2

가정은 정확합니다. jQuery 유효성 검사가 비동기 요청이라는 것을 알아야하므로 사용자 정의 메소드에서 비동기 요청을 사용할 수 없습니다.

$("#myform").validate({ 
    rules: { 
     email: { 
      required: true, 
      email: true, 
      remote: { 
       url: "check-email.php", 
       type: "post", 
       data: { 
        username: function() { 
         return $("#username").val(); 
        } 
       } 
      } 
     } 
    } 
}); 

동기 AJAX 요청 (또는 에이잭스를) 나는 당신이 일을 권하고 싶습니다 뭔가하지 않습니다 : 사용자 정의 방법이 상황에서가 아니라 remote 규칙을 사용해야하는 이유입니다.

+0

대린 감사합니다. Darin - 저는 레일에 있고 가능한 한 DRU로 내 경로와 컨트롤러를 유지하려고하므로 간단한 확인 검사를 처리하기 위해 새로운 작업을 만들고 싶지 않습니다. GET을 사용하고 배열을 반환하고 응답이 비어 있는지 확인하기 위해 검색 방법으로 구문 분석되는 일부 매개 변수를 전달합니다. 나는이 유형의 복잡성으로 리모트 대신 커스텀 메소드를 사용해야한다고 생각한다. – sshefer

+0

@sshefer, Rails를 모르지만 유효성 검사를 수행하기 위해 다른 작업을 만들어야하는 이유는 무엇입니까? 같은 행동을 재사용 할 수 없습니까? 유효성 검증이 성공했는지 또는 실패했는지에 따라 조치가 true 또는 false를 리턴해야합니다. 따라서 필요한 모든 매개 변수를 입력으로 취해 부울 값을 반환하는 동작을 정의하십시오. –

+0

그 좋은 생각, 내 유일한 문제/문제는 내가 원격 메서드를 재정의 할 수 있도록 내가 명시 적으로 전달하도록 말할 수 있습니까? 나는 기본적으로 당신이 정의한 데이터 외에 PLUS에서 필드 이름과 값을 포함한다는 것을 안다. params를 직접 설정할 수 있다면 이상적입니다. – sshefer

관련 문제