IE 브라우저에서는 정말 예외케이스가 많은 것 같다.
IE에서 GET 방식으로 jQuery.ajax() 요청을 할 경우 같은 URL에 대해 캐싱(caching)이 먹어 응답결과가 갱신되어 넘어오지 않는 문제가 있다.
이를 해결하기 위해서 다음과 같은 방법으로 코드를 변경해주면 된다.
1. cache:false 옵션 활용
1) ajaxSetup() 함수로 cache:false 값을 global하게 설정한다.
- 제일 깔끔한 방법. 추천!
- 공통 JSP 등에 아래와 같이 설정을 하게 되면 매번 ajax 호출시마다 설정하는 번거로움을 피할 수 있다.
<script type="text/javascript">
jQuery.ajaxSetup({
cache: false
});
</script>
2) 1회성일 경우 ajax 호출시 cache:false값을 설정해주면 된다.
<script type="text/javascript">
jQuery.ajax({
url:"http://www.naver.com",
cache: false,
dataType: "json",
success: function (result) {},
error: function () {}
});
</script>
2. new Date()로 URL에 TIMESTAMP값 추가하기
- 다른 URL로 인식할 수 있도록 가변적인 TIMESTAMP값을 넣어준다.
<script type="text/javascript">
jQuery.ajax({
url:"http://www.naver.com?t=" + new Date().getTime(),
dataType: "json",
success: function (result) {},
error: function () {}
});
</script>