Wie setze ich den Cache für getJSON in jQuery auf „false“?
Lesezeit: 3 Minuten
Abhinav
ich benutze getJSON um die Ergebnisse von der Serverseite abzurufen, aber mit Browser-Cache-Problemen konfrontiert. Ich möchte, dass der Cache falsch ist. Ich habe versucht, dies kurz vor meinem zu verwenden getJSON Anruf.
$.ajaxSetup({
cache: false
})
Aber ich erhalte nicht die erwarteten Ergebnisse. Es werden immer noch die alten Ergebnisse angezeigt.
Ich habe auch einige andere Lösungen identifiziert, z. B. using .ajax aber das möchte ich wirklich nicht verwenden.
Siehe auch $.getJSON, das zwischengespeicherte Daten in IE8 zurückgibt
– KyleMit ♦
7. November 19 um 20:27 Uhr
Ihr Code benötigt nur einen Trigger, um aktiviert zu werden.
Dadurch können Sie den Cache in allen zukünftigen Ajax-Dateien deaktivieren
Dadurch wird es global festgelegt, was schlecht ist und sich auf andere Ajax-Aufrufe in Ihrem Programm auswirken kann tun Caching benötigen
– vsync
12. Januar 15 um 16:42 Uhr
@helloChris – hier ist eine gute Erklärung von jQuery “Eine Seite kann nicht sicher manipuliert werden, bis das Dokument “bereit” ist.” jQuery erkennt diesen Bereitschaftszustand für Sie. Der in $( document ).ready() enthaltene Code wird nur einmal ausgeführt die Seite Document Object Model (DOM) ist bereit für die Ausführung von JavaScript-Code.” LESEN SIE MEHR ÜBER DIE API
– Knochenschnäpper
24. Juli 15 um 3:34 Uhr
@bonesnatch Der meiste jQuery-Code würde das brauchen, richtig, aber diese Einstellung hat nichts mit dem DOM zu tun. Das Dokument könnte sich in einem beliebigen Zustand befinden, wenn Sie diese Einstellung vornehmen, und es würde keinen Unterschied machen, soweit ich das beurteilen kann. Es gibt keine Seitenmanipulation.
– Chris
24. Juli 15 um 15:48 Uhr
Warum braucht es einen Auslöser? Bitte erklären Sie, warum es nicht so funktioniert, wie es das Originalplakat verwendet hat.
– Rune Jeppesen
4. November 15 um 15:44 Uhr
Ästhetischere Art der Verwendung; $.ajaxSettings.cache = falsch;
– Mustafa Çakıroğlu
15. Februar 16 um 12:48 Uhr
Sie können entweder dies verwenden, das den Cache global deaktiviert:
Die Antworten von semente und bonesnatch sind richtig, aber wenn Sie $. getJSON und anderswo verwenden möchten, nutzen Sie das Caching (Sie möchten den Cache nicht für alle Aufrufe auf „false“ setzen), aber Sie möchten den Cache nur für a sprengen Einzelaufruf können Sie einen Zeitstempel in die Dateneigenschaft von $.getJSON() einfügen. Durch Hinzufügen eines eindeutigen Werts zur Abfragezeichenfolge der Anfrage ist die Anfrage immer eindeutig und wird nicht vom Browser zwischengespeichert – Sie erhalten immer die neuesten Daten.
Lange Version:
var ts = new Date().getTime();
var data = {_: ts};
var url="/some/path.json";
$.getJSON(url, data);
Alles in einer Version:
$.getJSON('/some/path', {_: new Date().getTime()});
Beides führt zu folgender Anfrage:
/some/path.json?_=1439315011130
wobei die Zahl am Ende der Zeitstempel für den Moment ist, in dem der Code aufgerufen wird, und daher immer eindeutig ist.
Ich würde sagen, bei weitem die beste Lösung für das gestellte Problem. Sie müssen Ihr Javascript nicht ändern, keine Änderung der globalen Konfiguration, nur ein einfacher zusätzlicher Parameter, der an die Funktion übergeben wird.
– Chris
4. April 16 um 9:21 Uhr
Es ist keine Lösung, wenn Sie Azure CDN verwenden. Azure gibt zwischengespeichertes Objekt zurück, wenn Sie zusätzliche Parameter senden
– Abgabe
7. Juni 19 um 11:43 Uhr
.
7575200cookie-checkWie setze ich den Cache für getJSON in jQuery auf „false“?yes
Siehe auch $.getJSON, das zwischengespeicherte Daten in IE8 zurückgibt
– KyleMit
♦
7. November 19 um 20:27 Uhr