Daten werden nicht aktualisiert
André Derron
- javascript
0 ChrisB0 Kalle_B0 André Derron0 Kalle_B
Hallo NG
Mit dem unten stehenden Code hole ich Informationen vom Server.
Alles läuft soweit gut.
Wenn die Daten auf dem Server geändert werden, zeigen einige Browser (besonders Opera) aber immer noch die alten Daten.
Erst beim leeren des Browser-Cache's kommen die aktuellen Daten.
Wie kann ich das umgehen? Bin um jeden Tipp dankbar.
Besetn Dank im Voraus
``
var infoFile = this.BildOrdner + this.BildGruppe + "/" +
this.BildGruppe + ".JSON";
if ( window.XMLHttpRequest ) {
http = new XMLHttpRequest();
} else if ( window.ActiveXObject ) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
if ( http != null ) {
with ( http ) {
open("GET", infoFile, "true");
onreadystatechange = this.ausgeben;
send(null);
}
}
Hi,
Wenn die Daten auf dem Server geändert werden, zeigen einige Browser (besonders Opera) aber immer noch die alten Daten.
Erst beim leeren des Browser-Cache's kommen die aktuellen Daten.
Wie kann ich das umgehen?
Liefere die Ressource serverseitig mit entsprechenden Angaben zum gewuenschten Caching-Verhalten aus.
Wenn auch das nichts hilft, koenntest du es auch mit POST statt GET versuchen. Insb. im IE soll das helfen, Cache-Probleme bei AJAX-Requests zu verhindern.
MfG ChrisB
Hallo ChrisB
Vorerst mal besten Dank für deine Antwort.
»»Liefere die Ressource serverseitig mit entsprechenden Angaben zum gewuenschten Caching-Verhalten aus.
Die Daten liegen im JSON-Format auf dem Server.
Keine Ahnung was ich da reinschreiben kann
»»Wenn auch das nichts hilft, koenntest du es auch mit POST statt GET
»»versuchen. Insb. im IE soll das helfen, Cache-Probleme bei AJAX-Requests zu verhindern.
Genau der IE macht keine Probleme, aber ich probiere es mal mit POST.
Feedback folgt
Gruss, André
Wenn die Daten auf dem Server geändert werden, zeigen einige Browser (besonders Opera) aber immer noch die alten Daten.
Wieso _besonders_ Opera? Du meinst _nur_ Opera.
Ist ein bekannter Fehler, war gerade vor ein paar Tagen Thema.
Nachdem du die Daten mit Javascript angezeigt hast, musst du noch "Abrakadabra" sagen, auf Javanisch heisst das
document.body.parentNode.style.backgroundColor = 'transparent'; // behebt den bug der Nicht-Darstellung
Kalle
Hallo Kalle
Wenn die Daten auf dem Server geändert werden, zeigen einige Browser
(besonders Opera) aber immer noch die alten Daten
» Wieso _besonders_ Opera? Du meinst _nur_ Opera.
» document.body.parentNode.style.backgroundColor = 'transparent';
Habs probiert, das schafft aber keine Abhilfe.
wie gesagt, so starte ich die Serveranfrage:
``
open("GET", infoFile, "true");
und so empfange ich die Antwort:
``
if ( http.readyState == 4 ) {
var str = http.responseText;
alert(str);
und wenn ich da das alert(str) dazwischen schalte
sehe ich auch da immer noch die alten Daten.
Und es ist wie du sagst, nur bei Opera.
Hast du, oder auch jemand anders, eine Idee?
Besten Dank, sowiso.
André
Hallo André
open("GET", infoFile, "true");
Du holst also ein Dokument, das der Browser schon kennt. Vergleichbar einem Bild oder einer CSS- Datei. Ddeshalb "holt" er es aus dem Cache.
Ein einfacher Trick ist, dem Browser einen anderen Dokumentnamen unterzuschieben, indem du wechselnde Zeichen als Parameter übergibst, die das Dokument aber ignoriert.
var zeit = new Date();
var ms = zeit.getMilliseconds();
open("GET", infoFile +'?' +ms, "true");
Kalle
Guten Morgen, Kalle
indem du wechselnde Zeichen als Parameter übergibst
Das ist die Lösung, besten Dank!