Alex: / (AJAX) kleines Cache Problem

Hallo,

ich versuche gerade, beim Klicken auf einen Begriff mit AJAX Informationen zu dem Begriff vom Server zu laden und anzuzeigen. Das funktioniert eigentlich auch so weit. Nur wenn man anschließend auf einen weiteren Begriff klickt, werden nochmal die Informationen vom vorigen Begriff angezeigt. Erst nach einem Reload ist es wieder OK:
http://mylittlehomepage.net/files/ajax-test/1/

Das scheint ein gängiges Problem zu sein, ich stehe aber gerade irgendwie auf dem Schlauch. Kann da mal jemand drüberschauen?

Danke!
Alex

  1. hi,

    ich versuche gerade, beim Klicken auf einen Begriff mit AJAX Informationen zu dem Begriff vom Server zu laden und anzuzeigen. Das funktioniert eigentlich auch so weit. Nur wenn man anschließend auf einen weiteren Begriff klickt, werden nochmal die Informationen vom vorigen Begriff angezeigt. Erst nach einem Reload ist es wieder OK:
    http://mylittlehomepage.net/files/ajax-test/1/

    Dass der IE bei GET solche Probleme macht, ist bekannt - da empfiehlt sich dann manchmal explizites Ausweichen auf POST, aber POST nutzt du in diesem Falle ja schon.

    Bei dir liegt das Problem allerdings ganz woanders - die Extension "Live HTTP headers" im FF zeigt, dass gar kein neuer AJAX-Request stattfindet.

    Warum nicht?
    Weil in xmlhttpPost() schon vorher ein Fehler auftritt, beim Versuch des Zugriffs auf das Element <div id="throbber"> per getElementByID.
    Dieses befand sich nämlich in <div id="result"> - nur durch Überschreiben von _dessen_ .innerHTML mit dem Ergebnis des ersten AJAX-Request hast du leider <div id="throbber"> aus dem Dokument gekillt.
    Scriptfehler, keine weitere Ausführung an dieser Stelle mehr - kein neuer AJAX-Request.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo wahsaga,

      Bei dir liegt das Problem allerdings ganz woanders [...]
      Weil in xmlhttpPost() schon vorher ein Fehler auftritt,
      [...]
      Scriptfehler, keine weitere Ausführung an dieser Stelle mehr - kein neuer AJAX-Request.

      Super, vielen Dank, Problem gelöst!

      Alex

  2. Hallo Alex,

    hab mir die Seite gerade einfach mal so angesehen. Ich finde das echt genial, wie du das gemacht hast. Darf ich den mal fragen, ob du direkt bei Wiki die Daten abrufst oder ob die Daten aus deiner Datenbank kommen? In die data.php kann ich ja leider nicht reinschauen.

    Gruß,
    Svenja

    1. Hallo Svenja,

      Darf ich den mal fragen, ob du direkt bei Wiki die Daten abrufst oder ob die Daten aus deiner Datenbank kommen?

      Also das ist bis jetzt noch ganz unspektakulär:
      http://mylittlehomepage.net/files/ajax-test/1/data.txt

      Grüße
      Alex

      1. Hallo Alex,

        Also das ist bis jetzt noch ganz unspektakulär:
        http://mylittlehomepage.net/files/ajax-test/1/data.txt

        uii vielen Dank, werde mir das gleich mal ansehen, haste denn mit dem noch mehr vor, weil du ja schreibst

        "noch ganz unspektakulär"

        Gruß,
        Svenja

        1. Hallo Svenja,

          uii vielen Dank, werde mir das gleich mal ansehen, haste denn mit dem noch mehr vor, weil du ja schreibst "noch ganz unspektakulär"

          Eigentlich bin ich nur am Ausprobieren von AJAX und das war mein erster Test. Und der war eben noch ganz unspektakulär.

          Grüße
          Alex

          1. Hallo Alex,

            so hab mir mal dein Script genommen und hab es ein wenig geändert. So ist es einfach ein wenig dynamischer :-)

            Hier mal ein Beispiel:

            -------------------------------------------------

            <?php
            require_once 'nmt-config.inc.php';

            header("Pragma: no-cache");
            header("Cache-Control: no-store, no-cache, max-age=0, must-revalidate");
            header('Content-Type: application/xml');

            if(isset($_REQUEST['id']))
             {

            $sql = "SELECT
                id,
                title,
                message,
                source_name,
                source_url

            FROM
                Texte

            WHERE id = " . $_REQUEST['id'] . "";

            $return = mysql_query($sql) OR die(mysql_error());
              $Texte = mysql_fetch_assoc($return);

            }
            echo '<?xml version="1.0"?>';
            ?>
            <data>
            <title><?php echo $Texte['title']; ?></title>
            <content><?php echo $Texte['message']; ?></content>
            <source_name><?php echo $Texte['source_name']; ?></source_name>
            <source_url><?php echo $Texte['source_url']; ?></source_url>
            </data>

            -------------------------------------------------

            Gruß,
            Svenja

  3. Hallo Alex,

    Das Problem hatte ich auch mal.
    Ich habe einfach eine Funktion zeit() geschrieben:

    function zeit() {
      var jetzt = new Date();
      return jetzt.getTime();
    }

    Wenn ich dann eine Adresse aurufen wollte habe ich dies wie folgt gemacht:

    var adr = 'http://...bla.php?t='+zeit();

    Gruß,
    Dodwin

    1. Hallo Dodwin,

      Das Problem hatte ich auch mal.
      Ich habe einfach eine Funktion zeit() geschrieben:
      [...]

      Letztenendes war der Fehler doch ein ganz anderer und hatte nichts mit dem Cache zu tun.

      Alex