php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
AJAX: Aufruf der PHP-Klasse wird nur einmal durchgeführt


 
Godfrey
02-12-2006, 19:07 
 
Hallo,

Ich rufe mit AJAX eine PHP-Klasse auf welche mir auch Daten schickt. Der Aufruf wird über ein select gemacht:
<select name="kategorie" class="post" style="width:300px"
onchange="loadOptions('../includes/ajax_serv.php?
load=' + this.value + '&amp;
lang=german&amp;phpExt=php', 'subkat', 'artikelnummer')">
<option value="1" selected="selected">Spiele</option>
<option value="2">Hardware</option>
<option value="3">Software</option>
<option value="4">Bücher</option>
</select>

Dabei wird für jeden Aufruf der Optionen je einmal die Klasse aufgerufen. Danach werden scheinbar immer nur die schon gesendeten Daten wieder angezeigt. Das ist aber ein Problem, da beim Wechsel der Optionen auch jedes Mal ein Datenbankzugriff erfolgen muss, der mir eine Nummer ermittelt welche sich in der Zwischenzeit geändert haben kann.

Der JS-Code ist:
function loadOptions(url, id, id2) {
if (window.XMLHttpRequest) {
var xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlHttp.open("GET", url, true);

xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200) {
_clearTopicList(id);
_xmlFileLoaded(xmlHttp.respon************ML, id, id2);
}
else {
alert ("Fehler bei der Kommunikation mit dem Server:\n" + xmlHttp.statusText);
}
}
};
window.setTimeout(function () {xmlHttp.send(null);}, 10);
}

Meine Frage ist nun: Wie kann ich es erzwingen, dass jedesmal neu die Klasse aufgerufen wird, also immer die aktuellen Daten geschickt werden.

 
wahsaga
02-12-2006, 19:29 
 
Original geschrieben von Godfrey
Danach werden scheinbar immer nur die schon gesendeten Daten wieder angezeigt.
Mit welchem Browser hast du das getestet?

Der IE macht Probleme bei AJAX-Abfragen per GET, da holt er des öfteren die Ressource aus dem Cache, auch wenn er nicht sollte. POST statt GET kann in solchen Fällen Abhilfe schaffen.

 
Godfrey
02-12-2006, 19:31 
 
Mhh, ja, ist IE6.0 und stimmt, der holt ja aus dem Cache...

Also mal mit POST versuchen. :)

Danke

 
Godfrey
02-12-2006, 19:42 
 
xmlHttp.open("POST", url, true);
hat das Problem behoben. :)

Danke, liesen sich nur alle Probleme immer so schnell beheben. :)

 
Slava
06-12-2006, 04:15 
 
xmlHttp.open("GET", url+"?zufal="+encodeURIComponent(Math.random()), true);

dann macht auch IE mit, da url jedes mal anderes ist


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:33 Uhr.