/ (AJAX) kleines Cache Problem
Alex
- javascript
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
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
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
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
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
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
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
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
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
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