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&apos;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("'", "&apos;"));
}

결국 '를 &apos; 로 치환하여 HTML에서 문자열로 인식하게 변경해줘야 한다.

아래는 HTML에서 특수 문자로 인식할 수 있어 치환이 필요한 대표적인 문자들이다.

 

^   &Hat;
'    &apos;
>   &gt;
<   &lt;
;    &semi;
&  &amp;
"   &quot;
#   &num;

 

혹은 Controller단에서 ''를 붙이지 않고 넣어주도록 수정해도 된다. 

 

 

 

 

 

 


Reference

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

https://chobopark.tistory.com/199

 

net::ERR_RESPONSE_HEADERS_MULTIPLE_CONTENT_DISPOSITION

 

크롬 웹브라우저에서 파일을 다운받다 생긴 오류이다. 

다른 브라우저는 중복헤더를 무시하기 때문에 해당 에러가 IE나 사파리에서는 발생하지 않지만,  크롬에서는 해당 이슈가 존재한다고 한다.

 

- 해결 방법

1. 첨부파일 다운로드 시 파일명을 큰따옴표(“)로 감싼다.
2. 첨부 파일명에 콤마(,)가 존재하면 다른 문자로 변경한다.

 

 

나같은 경우에는,  replace 함수를 통해 문자열을 치환하여 오류를 해결하였다. 

 

 

 

 

 

 


 

Reference

https://bebeya.tistory.com/entry/ERRRESPONSEHEADERSMULTIPLECONTENTDISPOSITION-ASP-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C-%EC%98%A4%EB%A5%98https://ansan-survivor.tistory.com/432

크롬 웹브라우저에서 SSL이 적용된 사이트에 접속하다보면, 프로토콜이 HTTP 에서 HTTPS 로 변경되어 접속하게 된다. 

즉, 크롬에서는 강제로 https 리다이렉트되는 기능때문에 한번 https로 접속한 사이트는 주소가 http로 변경되더라도 자동으로 https로 변경하여 접속하게 된다.

 

HTTPS가 아닌 HTTP로 접속을 원할 때, 아래와 같이 설정해주면 된다. 

 

- https -> https 강제전환 해제

크롬 주소창에 chrome://net-internals/#hsts 주소로 접속하여 크롬 설정 페이지로 들어간다.
왼쪽 사이드바에 [ Domain Security Policy ] 탭 클릭 후 하단에 [ Delete domain security policies ] 항목에서 해당 도메인을 넣고 [ Delete ] 버튼을 클릭한다.

 

 

아래와 같은 사항을 유의하자.

 
1. 프로토콜 제외
https://dev-record-levelup.tistory.com -> dev-record-levelup.tistiory.com
 
2. 포트 제외
https://dev-record-levelup.tistory.com:8080 -> dev-record-levelup.tistiory.com

 

3. 크롬 창을 닫고 설정 페이지만 열어둔 상태에서 도메인을 삭제해야 한다.

  • 리다이렉트 되는 도메인을 삭제 후 https로 다시 접속할 경우 자동 리다이렉트 되기에 위의 방법을 처음부터 다시 해야 한다.

 

 

 

 

 

 

 


Reference

https://ssd0908.tistory.com/58https://ansan-survivor.tistory.com/432

+ Recent posts