2012-02-29 15 views
6

Mam wywołanie ajax do kontrolera, który ma przesłać mi zaktualizowany widok, dzięki czemu mogę zaktualizować moją stronę o zaktualizowane dane. Ale otrzymuję z powrotem nagłówek 304: Not Modified.

Próbowałem użyć opcji braku pamięci podręcznej dla wywołania ajax i próbowałem ręcznie dodać sygnaturę czasową na końcu adresu URL żądania, a inne nie działały na IE9.

Działa to doskonale na chrome bez ustawiania opcji buforowania.

Nie jestem zbyt pewien, gdzie jest problem.

Poniżej przedstawiono kod, którego użyłem, który według mnie pracował po ręcznym dodaniu znacznika czasu. QA powiedziała, że ​​nie działa na swoim komputerze.

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

Odpowiedz

4

Spróbuj ustawić następujące w JQuery $ .ajax, aby zapobiec IE z buforowanie żądań ajax. To zawsze pracował dla mnie.

$.ajaxSetup({ cache: false }); 

LUB

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

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

"Jeśli ustawiona na wartość false, wymusi żądanie stron, które nie będą buforowane przez przeglądarkę. Ustawienie wartości cache na false powoduje również dodanie parametru adresu zapytania "_ = [TIMESTAMP]" do adresu URL. "

Poniżej znajduje się artykuł z kilkoma innymi możliwymi rozwiązaniami. http://www.dashbay.com/2011/05/internet-explorer-caches-ajax/

Mam nadzieję, że to pomaga

0

Stosując metody POST zamiast GET lub przejść losowo obojętne parametrów (takich jak znacznik czasu) jest tylko solidnego sposobu zapobiegania buforowania w IE. :(

edycja:. Gdyby uważnie przeczytać i znaleźć dodanie znacznika czasu nie pomaga - proszę dać małą próbkę kodu, aby pokazać jak można go dołączyć