2012-02-29 2 views
6

업데이트 된 데이터를 사용하여 내 페이지를 업데이트 할 수 있도록 업데이트 된 뷰를 다시 보내야하는 컨트롤러에 대한 ajax 호출이 있습니다. 그러나 나는 304 : Not Modified 헤더를 얻는다.

나는 ajax 호출에 no-cache 옵션을 사용하고 수동으로 요청 URL 끝에 타임 스탬프를 추가하려고했지만 그 중 IE9에서는 작동하지 않았다.

캐싱 옵션을 설정하지 않으면 크롬에서 완벽하게 작동합니다.

문제가있는 곳이 너무 명확하지 않습니다.

다음 코드는 내가 수동으로 타임 스탬프를 추가 한 후 사용했다고 생각한 코드입니다. QA는 그녀의 컴퓨터에서 작동하지 않는다고 말했습니다.

 $.ajax({ 
     url: form[0].action + "?cc="+new Date().getTime(), 
     type: 'POST', 
     cache: false, 
     data: $(form).serialize() 
    }) 
    .success(createFilterCleanup); 

답변

4

방지하기 위해, 당신의 JQuery와 $의 아약스에 다음과 같이 설정하십시오 귀하의 아약스 요청을 캐싱에서 IE. 이 항상 나를 위해 일했다.

$.ajaxSetup({ cache: false }); 

또는

$.ajax({ type: 'POST', cache: false }); 

http://api.jquery.com/jQuery.ajax/

"false로 설정하면 요청한 페이지가 브라우저에서 강제로 캐시되지 않습니다. 캐시를 false로 설정하면 쿼리 문자열 매개 변수 "_ = [TIMESTAMP]"가 URL에 추가됩니다. "다음

는 다른 가능한 솔루션 기사입니다. http://www.dashbay.com/2011/05/internet-explorer-caches-ajax/

희망이 도움이

0

GET 대신 POST 메서드를 사용하거나 더미 (현재 타임 스탬프와 같은) 매개 변수를 전달하는 것은 강력한 방법으로 IE에서 캐싱을 방지합니다. :(

편집 :.주의 깊게 읽고 당신을 도움이되지 타임 스탬프를 추가 발견 한 것은 - 당신이 그것을 추가 어떻게 보여줄 수있는 작은 코드 샘플을 적어주세요