js의 이상한 JSON 해석 동작 "예기치 않은 토큰:"
이 jsfiddle에서 설명한 바와 같이 JS 파일이 있고 사용하지 않고 JSON 개체를 생성하면 키(멤버)가 따옴표로 둘러싸여 있는지 여부에 따라 동작이 달라집니다.
다음 중 하나:{ a: 1};
하지 않은 코드: "Code" "Code" :{ "a": 1 };
에러 메세지가 표시됩니다(Chrome에서는 FF/IE에서는 다르지만, 구문에서는 실패합니다).
학습되지 않은 구문 오류:예기치 않은 토큰:
다음과 같습니다.alert({ "a": 1 });
이치노
왜 이런 일이 일어날까요?
스테이트먼트:
{ a: 1 };
는 오브젝트 리터럴이 아닙니다.하나의 라벨이 붙어있는 블록스테이트먼트입니다.유효합니다.
이것은, 다음과 같습니다.
{ "a": 1 };
구문 오류입니다. 해석할 수 없기 때문입니다.따옴표로 묶인 "a"는 블록 내에서 표현문을 시작하지만 문자열 다음에 나오는 다음 토큰은 콜론이며 콜론 뒤에 이어지는 표현식 형식은 없습니다.
지금:
var x = { "a": 1 };
는, 되지 않기 합니다.은 '아까운데'로 시작합니다.var
변수 선언입니다.가 의미하는 리터럴의입니다.=" 토큰 오른쪽에 있는 식에서 "{"가 의미하는 것은 개체 리터럴의 시작뿐입니다.마찬가지로 다음 사항에 주의해 주십시오.
({ "a": 1 });
괄호를 열면 파서가 중첩된 하위 표현을 예상할 수 있으므로 "{"는 개체 리터럴의 시작임을 명확하게 의미합니다.
JSON을 .require
은 '이렇게 하다'로 끝나지 않습니다..json
을 사용하다을 「」로 변경.bla.json
잘 작동합니다.
AJAX를 사용하여 할 때 .jsonp
때jsonp
는 필요 없습니다. AJAX 의 데이터 을 일반 AJAX .json
$.ajax({
dataType: 'json', // try using json rather than json p
...
});
언급URL : https://stackoverflow.com/questions/10080551/weird-json-parsing-behavior-in-js-unexpected-token
'programing' 카테고리의 다른 글
어레이를 FormData에 추가하고 AJAX를 통해 전송 (0) | 2023.03.08 |
---|---|
XmlHttpRequest on progress 간격 (0) | 2023.03.08 |
angularjs로 줄 바꿈 유지 (0) | 2023.03.08 |
ui-select angular에서 선택한 옵션 지우기 (0) | 2023.03.08 |
XML 대신 주석을 사용하여 Spring LdapTemplate를 구성하는 모범 사례 (0) | 2023.03.08 |