Przed wszystkim: $.getJSON back button showing JSON return data not the page nie pomógł, podobnie jak https://groups.google.com/group/angular/browse_thread/thread/3787ad609c0beb77/eb1b57069dab9f63, a Internet również nie pomógł.Przycisk przerwania JSON w przeglądarce Chrome, przycisk Załaduj ponownie w IE (pokazany jako nagie dane)
Oto problem:
Dzwonię url z poziomu strony, aby uzyskać dane json, które następnie pobiera renderowane z jQuery szablonów wewnątrz tej samej stronie.
Wyobraźmy sobie, że jesteśmy na stronie http://someurl.com/search i zaczynamy wniosek jak ten
$.ajax({
url: '/searchthis', //important, this is NOT THE SAME URL
cache: false,
type: 'GET',
headers: {
"Accept": "application/json",
},
dataType: 'json'
success: function(data) {
doSomethingWithResults(data);
}
});
Odpowiedź Rack ma nagłówek sterowania cache ustawiona na no cache:
Cache-Control:no-cache
wszystko działa dobrze, ale jeśli opuścisz stronę dla innej strony w Chrome, a następnie naciśniesz przycisk Wstecz, otrzymasz pokazane nagie dane JSON. To samo zachowanie występuje po naciśnięciu przycisku ładowania w IE8. Oba działają doskonale, jeśli po prostu naciśniesz Enter w adresie URL na pasku adresu.
ja nie dostaję, jak mogę rozwiązać ten problem, bo chłopaki Chrome nie zrobi (patrz http://code.google.com/p/chromium/issues/detail?id=108425)
Wydaje mi się błędnej interpretacji po stronie przeglądarki, ponieważ buforuje coś naprawdę powinno not (nagłówek odpowiedzi) i buforuje coś pod niewłaściwym adresem URL (ponieważ żądanie JSON nie trafia pod ten sam adres URL)
Występowałem z podobnymi problemami w aplikacji ekspresowej. Wydaje się, że przekazuje nawet pusty obiekt, ponieważ wartość danych wystarczy. Dzięki za zamieszczenie tego. – kdetella
Naprawiono to, wysyłając format do danych. Użyłem 'json', tak jak:' $ .getJSON (ścieżka, {format: "json"}, handler_func (odpowiedź) {// coś}), aby uruchomić – Glenn