작성일 : 11-12-15 16:48
|
[JQuery] 캐시를 위한 dummy 변수 이용
|
|
|
글쓴이 :
조형래
 조회 : 4,011
|
캐시
상황은 이렀습니다.
1번. div태그로 숨김설정을 한 다음에 show로 보여주면서 div안에 ajax로 페이지를 호출합니다.
2번. 이 상태에서 ajax로 불러온 페이지에서 모달창으로 다시 페이지를 로딩합니다.
3번. 이 모달창에서 특정 데이타를 삭제버튼을 클릭해서 데이타를 삭제합니다.
디비를 확인해보니 바로 데이타가 삭제가 되었습니다.
그런데 1번을 실행해보면 ajax로 호출한 페이지가 바뀌지 않고 삭제 전의 페이지를 보여줍니다.
분명히 디비에서는 데이타가 삭제됐습니다.
그래서 익스플로어를 닫고 다시 1번을 확인해보면 정상적으로 데이타가 삭제된 페이지가 호출이 잘 됩니다.
파폭에서는 3번을 실행하면 바로 1번에서 데이타가 삭제된 상태로 정상출력이 됩니다.
익스에서만 이런 문제가 발생하는데요.
캐시가 남아있어서 그런 거 같은데요. 해결방법이 있을까요?
-----------------------------------------------------------------------------------------------------------------------
아마 get으로 ajax 요청시에 문제가 발생하시는거 같은데 dummy 필드를 하나 주면 간단하게 해결될꺼 같습니다.
그러니까
a.php 를 호출한다면
a.php?dummy=1
처럼 해서
매 호출마다 dummy += 1 해서 호출하시면
그러한 현상이 없을 것 입니다.
[나는 이렇게 스피쿠스 동영상 플레이어 문제를 해결 하였음]
[추가정보]
페이지 로딩시 asp 가 자바 스크립트 보다 우선시 되기 때문에 asp에서 자바스크립트로는 넘길수만 있음, 반대는 어려움, 다른 방식 찾아볼것
<script language="javascript">
<%
/*
Jquery ajax 에서 캐싱이 되는 현상을 제거하기 위해서 dummy 변수를 만듬,
이 dummy 변수를 사용하지 않았을때 발생하는 문제는,
플레이어를 설치완료 하기전 실행버튼을 누르면,
플레이어 설치 완료 이후에 alert 창이 뜨고, 플레이어도 실행이 되는 현상이 발생
이는 Jquery 의 error 체크 부분에서 error 체크 내용이 캐시에 저장되기 때문에 발생함.
(성격이 급한 10% 의 test 유저에서 발생하였음)
그래서 dummy 변수를 만들어 다른값을 넘김으로 다른 페이지 임을 인식시킴.
dummy 변수가 이해되지 않는다고 제거하지 말것. (20111215 조형래 남김)
*/
dummy = request("dummy")
if dummy = "" then
dummy = "0"
end if
response.write "dummy =" & dummy & ";"
%>
</script>
[아래는 jquery 실행펑션 내부임]
$("<img src='/err_check_img/_bpuWw49p8M.jpg' />").error(function () {
<%dummy=dummy+1%>
alert("'전용 Player로 보기' 아래에 있는 다운로드 버튼을\n 눌러 최신버전 전용 플레이어를 설치하세요.");
document.location.href = "Detail_Video_New.asp?payment_seq=<%=payment_seq%>&spicus_player=y&dummy=<%=dummy%>";
});
|
|