3

플러그인 JQuery와 유효성 검사를 사용하여 문자열을 반환 : 원격 JQuery와 유효성 검사 플러그인의 원격 기능 설명, JQuery와 문서에서

The response is evaluated as JSON and must be true for valid elements, and can be any false, undefined or null for invalid elements, using the default message; or a string, eg. "That name is already taken, try peter123 instead" to display as the error message.

내가 응답의 에코 PHP는 페이지가, 그리고 내가 에코 사용하는 경우가 설명 된대로 작동 ("참") 또는 에코 ("거짓"). 그러나 문자열을 에코 할 때마다 기본 메시지가 아닌 오류 메시지가 표시됩니다. 오류 메시지를 반향 출력하고 유효성을 검사하는 입력 상자 옆의 오류 레이블에 표시하려면 어떻게해야합니까?

$(document).ready(function(){ 
    $("#masq").validate({ 
     rules: { 
      user: { 
       required:true, 
       minlength:1, 
       remote:"<?=$_SERVER['PHP_SELF']?>?action=remoteCheck" 
      } 
     }, 
     messages: { 
      user: "id must have at least 1 character." 
     } 
    });   
}); 

내 PHP 함수 : 여기

내 JQuery와 함수이다 문서 상태로

//sql validation here 
    if(!$user) { 
     $return = "id " . $user . " does not exist."; 
     //echo("false"); works correctly 
      echo($return); //does 
    } 
    else { 
     echo("true"); 
    } 

답변

1

, 당신은 출력 유효한 자바 스크립트를 필요로하므로 문자열을 인용 (과 그렇지 않은 신분증에 따옴표 등이 포함되어 있으면 탈출을 잊어 버려라.) :

$return = "\" id" . $user . " does not exist.\""; 

var foo = id 2 does not exist.; 

JS 중 하나일까요?

+0

이 작업을 시도했지만 작동하지 않았습니다. 위에 표시된 것과 같이 정확하게 수행하면 유효성 검사가 작동하지 않습니다. 위의 작은 따옴표를 사용하면 위의 결과와 동일한 문제가 발생합니다. – nsw1475

2

나는 이것도 고심했다. (나는 하나 이상의 값을 전달해야하고 어떤 조건이 false를 반환하는지에 따라 연결된 오류 메시지를 보여줄 필요가있다. 그러나 그것은 다른 SO 게시와 같다). 설명서의 내용을 잘못 이해 한 것입니다. JSON 형식으로 전달되었으므로 true 또는 false 만 반환 할 수 있습니다. 메시지 : 코드를 사용하고 오류와 관련된 메시지를 지정한 경우 참조하는 "문자열"입니다. 여기

는 (의견) 예입니다 :

$("#MemberInfo").validate({ 
    errorPlacement: function(error, element) { 
      error.insertAfter(element); 
     }, 
    rules: {  
     Memberemail: { 
      required: true, 
      email: true, 
      remote: "checkReg.cfm" 
     }, 

    }, 
    messages: { 
     Memberemail: { 
      required: "Please enter a valid email address", 
      remote: jQuery.validator.format("{0} is already registered")  
     } 
    } 
}); 

서버 측 코드가 반환 "true"또는 "false "메시지의 {0}은 양식의 서버 측 스크립트에 전달 된 값을 넣고 그 필드 옆에 나타나는 오류에서 나머지 사용자 정의 오류 메시지를 인쇄합니다.

저는 아직도 JQuery를 배우고 있습니다. 그래서 당신이나 다른 사람들을 도울 수 있기를 바랍니다. 여전히 문제가된다면!

+1

이것은 사실이 아닙니다. 문서 (및 코드)에서는 문자열을 반환 할 수 있다고 말합니다. 반환하는 문자열은 유효한 json이어야하므로 'true', 'false' , 또는 다른 것'. – carpeliam

+0

맞습니다. 결국 결국 알아 냈습니다. 감사! – Joyrex

2

서버가 유효한 JSON (유효한 JS가 아님)을 반환하는 경우 문자열을 반환 할 수 있음을 확인할 수 있습니다. Ruby on Rails에서 필요한 모든 이스케이프를 처리하는 "my string".to_json을 통해이를 수행 할 수있었습니다. PHP 접근 방식이 무엇인지 확신 할 수 없습니다. JSON 문자열은 다음과 같이 이중으로 인용해야합니다 ('My name is "Liam"'.to_json => ""My name is \\"Liam\\"""). 서버 플랫폼이 무엇이든간에 =>의 오른쪽에있는 것과 같은 문자열을 제공해야합니다.

0

github에 버그를 입력했으나 질문에 대한 대답이 나와야합니다.
그것의 좋지 않은, 그러나 당신의 물건을 데이터베이스의 날짜에 양식에 날짜를 비교

시나리오에는
작업을 얻을 것이다.
PHP 리모컨 프레임 워크에서 메소드를 호출하는 데 사용됩니다.
응답이 json 개체 { "data": "true"} 또는 { "data": "xx/xx/xxxx보다 큰 날짜를 입력하십시오"}

이것은 비참하게 실패합니다.
추적 할 때 게시물을 보면서 짧은 회로가 표시됩니다 (제 생각에는).

"true"또는 "false"문자열 만 전달하면 정상적으로 작동합니다.
false 대신 "some kind of message"를 전달하면 끊어집니다.

문서에서 메시지를 전달할 수 있어야한다고 말합니다. 글쎄, 내가 부울이 아닌 다른 것을 전달하면 깨집니다.
헤더를 추가해야하는지 잘 모르겠습니까?

이 작품은 약
나는 response.data에 대한 응답에서 라인 976과 985을 수정 내 원래 JSON 객체를 사용 (대신 CDN을 사용) 실제 소스 파일을 다운로드.

+0

@ nsw1475 오, 그래, 귀하의 경우에는 response.data 대신 response.d로 변경해야합니다. –

관련 문제