JavaScript/ajax2014. 6. 2. 15:14
반응형

 Internet Explorer8 또는 9 버전을 이용해서 웹 페이지를 작성하다 jquery의 ajax호출을 이용 화면의 구성요소를 호출할 경우아래와 같은 스크립트 에러로 인하여 화면의 일부 구성요소들이 로딩되지 않는 현상이 발생하는 경우가 있다.



 이 경우 ie의 경우 여타의 브라우저(Firefox, Chrome)처럼 상세한 에러 메시지를 발생시켜 주지 않아서 에러를 특정하고 배제하는데 생각외로 시간이 걸리는 경우가 있다. 이럴 경우 아래와 같은 부분을 후보로 올리고 에러를 특정해 보는 것이 유효할 듯 하다.


주요 원인

ajax를 이용하여 Javascript를 구문을 호출할 경우 구문 체크가 매우 엄격하게 일어나는 듯 하다.


적용 가능한 해결책 리스트


1. 자바스크립트 구문 에러

불러올 대상의 스크립트 요소 중 일부에서 스크립트 구문 오류가 있을 경우 위와 같은 에러를 만날 수 있다.

※필자의 경우는 아래처럼 스크립트의 텍스트 출력방지를 위한 주석 처리에 실수가 있었던 경우였다.(커맨트 열고 닫지 않았다. 초보적인 미스 ㅜㅜ)

<script type='text/javascript'>
//<!--
    /* 스크립트 구문 */
</script>


2. 여분의 콤마

아래처럼 배열의 마지막 요소 다음에 콤마가 남아 있는 경우가 있다. 로직상의 미스일 경우도 있고 프로그래밍의 편의상 남겨둔 경우도 있으나 상황에 따라 구문에러인 경우도 있고 정상적으로 동작하는 경우도 있으므로 여분의 콤마는 배제하여 일관적으로 동작할 수 있도록 하자.

<script type='text/javascript'>
var arr = ['item1','item2',];
</script>


3. 컨텐츠 타입 ie의 경우 ajax호출의 응답이 json인 경우 컨텐츠 타입을 application/json으로 지정하면 제대로 동작하지 않는 케이스가 있다. 이경우 text/plain으로 컨텐츠 타입을 지정하면 해결된다.


 

 위에서 열거한 케이스 이외에도 여러가지 케이스가 있을 수 있지만 위의 내용만 잘 고려해도 에러를 어느정도 방지할 수 있다고 생각된다.

'JavaScript > ajax' 카테고리의 다른 글

ajax get 한글 파라메터 깨지는 문제  (0) 2014.03.10
Posted by Reiphiel