André Derron: Daten werden nicht aktualisiert

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);
      }
  }

  1. 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

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. 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é

  2. 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

    1. 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é

      1. 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

        1. Guten Morgen, Kalle

          indem du wechselnde Zeichen als Parameter übergibst

          Das ist die Lösung, besten Dank!