2017-03-21 1 views
0

내가 rules라는 변수에 유지하고있는 다음과 같은 JSON 문자열JSON 예기치 않은 토큰

{"rules": { 
    "firstName": { 
    "required": true, 
    "range": "[2,50]" 
    }, 
    "lastName": { 
    "required": true, 
    "range": "[2,50]" 
    }, 
    "email": { 
    "required": true, 
    "email": true 
    }, 
    "email2": { 
    "equalTo": "email", 
    "required": true 
    }, 
    "password": { 
    "required": true, 
    "range": "[5,25]" 
    }, 
    "password2": { 
    "equalTo": "password", 
    "required": true 
    }, 
    "termsConfidentiality": { 
    "required": true 
    } 
}, 
"messages": { 

    "termsConfidentiality": { 
     "required": "You must accept the Terms of Use and Privacy Policy in order to register." 
    }, 
    "termsConfidentiality": { 
     "required": "You must accept the Terms of Use and Privacy Policy in order to register." 
    } 
}, 
"errorPlacement": function(error, element) { 
    if (element.attr('name') == 'termsConfidentiality') { 
         error.appendTo($('#terms')); 
    } 
} 
} 

에게 있습니다. 내가 JSON.parse(rules)을 수행 할 때 내가 내가 errorPlacement을 추가 할 때까지

39 Uncaught SyntaxError: Unexpected token u in JSON 

모든 것이 괜찮 았는데 다음과 같은 오류가 발생합니다. 예기치 않은 토큰은 'function'이라는 단어의 'u'입니다. 나중에 그것을 구문 분석 할 수 있도록 형식을 지정하는 적절한 방법은 무엇입니까?

+7

: 또한 메시지에 중복 키를 가지고있다. – epascarello

+0

하지만 JQuery Validator를 사용할 때는 errorPlacement를 사용할 때 "함수"를 사용해야합니다. 만약 내가 변수에 배치하고 나중에 구문 분석하지 않고 유효성 검사기를 입력하면 정상적으로 작동합니다. 따라서이 방법을 사용하여 함수의 형식을 올바르게 지정하는 방법이 있어야합니다. –

+0

JSON에 함수가있는 경우 JSON을 사용하지 않습니다. – epascarello

답변

2

@epascarello가 말한 것처럼 "함수가 JSON에서 유효하지 않습니다." JSON과 Javascript를 섞지 마십시오. 이름을 공유하더라도 서로 독립적입니다. JSON은 언어가 아니기 때문에 함수를 사용할 수 없습니다. 데이터 형식입니다. 함수를 문자열로 캡슐화 한 다음 eval 함수를 사용하여 실행할 수는 있지만 꽤 권장하지는 않지만 상당히 안전하지는 않습니다.

+0

확인 덕분에, 내가 JSON에게 @ceejayoz 말했듯이, 나는 단순히 rules.errorPlacement했다 –

+0

이 방법을 사용하여 포함하지 않는 다른 해결책을 찾을 것이다. 도와 주셔서 감사합니다! –

0

이미 언급했듯이 json과 javascript를 섞지 마십시오.

"messages": { 

    "termsConfidentiality": { 
     "required": "You must accept the Terms of Use and Privacy Policy in order to register." 
    }, 
    "termsConfidentiality": { 
     "required": "You must accept the Terms of Use and Privacy Policy in order to register." 
    } 
} 

유효한 JSON :: 함수는 JSON에 유효하지 않습니다

{ 
     "rules": { 
      "firstName": { 
       "required": true, 
       "range": "[2,50]" 
      }, 
      "lastName": { 
       "required": true, 
       "range": "[2,50]" 
      }, 
      "email": { 
       "required": true, 
       "email": true 
      }, 
      "email2": { 
       "equalTo": "email", 
       "required": true 
      }, 
      "password": { 
       "required": true, 
       "range": "[5,25]" 
      }, 
      "password2": { 
       "equalTo": "password", 
       "required": true 
      }, 
      "termsConfidentiality": { 
       "required": true 
      } 
     }, 
     "messages": { 
      "termsConfidentiality": { 
       "required": "You must accept the Terms of Use and Privacy Policy in order to register." 
      } 
     } 
    }