Uncaught SyntaxError: missing ) after argument list
자바스크립트에서 발생한 오류로 onclick에서 String 파라미터를 넘겨야하는데 못넘겨서 발생한 오류이다.
주로 아래와 같은 케이스에서 발생한다.
- Case 01 : 문자열을 연결하는 "+" 연산자가 없는 경우
console.log('PI: ' Math.PI);
// SyntaxError: missing ) after argument list
console.log('PI: ' + Math.PI);
// "PI: 3.141592653589793"
- 해결 방법01
+ 연산자 를 추가한다.
- Case 02 : 따옴표로 감싸주지 않은 경우
content += '<a herf="javascript:void(0);" onclick="adresMove('+ value.indv_lnm_adres + ',' + key + ');">';
// Uncaught SyntaxError: missing ) after argument list
- 해결 방법02
content += '<a herf="javascript:void(0);" onclick="adresMove(\''+ value.indv_lnm_adres + '\',\'' + key + '\');">';
따움표를 시작하는 부분과 끝나는 부분에서 \, 즉 역슬래시를 붙여주면 따움표로 인식하여 정상적으로 작동이 된다.
즉, 시작부분은 \' 끝나는 부분은 \' 똑같은 방법으로 처리해준다.
- Case 03 : JSON 데이터의 오류가 있는 경우
데이터를 JS의 JSON.parse(); 에서 호출하는데, 스트링 안에 ' 가 포함되어 있으면 오류가 난다.
예 ) "AB'C"
위와 같은 경우, function( 'AB'C' ); 와 같이 되어야 하는데, function( 'AB'C' ); 로 인식되어
스크립트에서는 마지막에 ')' 괄호를 문자로 인식한다.
- 해결 방법03
이럴 때는 컨트롤러 단에서 특수 문자 치환이 필요하다.
for(int i=0; i<list.size(); i++) {
String tmp = (String) list.get(i).get("text");
list.get(i).put("text", tmp.replace("'", "'"));
}
결국 '를 ' 로 치환하여 HTML에서 문자열로 인식하게 변경해줘야 한다.
아래는 HTML에서 특수 문자로 인식할 수 있어 치환이 필요한 대표적인 문자들이다.
^ ^
' '
> >
< <
; ;
& &
" "
# #
혹은 Controller단에서 ''를 붙이지 않고 넣어주도록 수정해도 된다.
Reference
https://chobopark.tistory.com/199
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Errors/Missing_parenthesis_after_argument_list
https://lookingfor.tistory.com/entry/Uncaught-SyntaxError-missing-after-argument-list
'Programming > Error case' 카테고리의 다른 글
[크롬/Chrome]ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION (파일 다운로드 오류) (2) | 2022.09.07 |
---|---|
[크롬/Chrome] http -> https 강제전환 해제 (1) | 2022.08.25 |