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>
'프론트기술 > 자바스크립트' 카테고리의 다른 글
[jQuery] 객체 존재여부 확인하기 (0) | 2016.08.11 |
---|---|
[jQuery] XSS에 안전한 함수들 (0) | 2015.09.18 |
[jQuery] datepicker 최대값, 최소값 설정하기 (0) | 2015.09.03 |