Datensatz mit AJAX aktualisieren
Frank S.
- javascript
Hallo zusammen,
Ich brauch mal eure Hilfe. Ich will eine Funktion schreiben, die mit AJAX prototype Daten alle 10 Sekunden automatisch aktualisiert.
Die PHP-Datei startet mit:
<body onLoad="getData()">
Die Funktion sieht so aus:
<script>
function getData() {
var i = 3;
var myAjax = new Ajax.PeriodicalUpdater(
'ziel',
'execute.php', {
method: 'post',
parameters: 'i=' + i,
frequency: 2
}
);
}
</script>
Da ich mich mit Javascript nicht sonderlich auskenne habe ich zunächst einmal eine ganz blöde Frage: wenn ich die PHP Datei aufrufe, bekommt die einen Parameter i mit, wie kann ich den in Javascript auslesen?
Die zweite Frage ist etwas komplizierter: die Datei execute.php liefert einen kompletten Datensatz bestehend aus mehreren Feldern zurück. Wie gehe ich vor, wenn ich nicht den ganzen Text in das div "ziel" schreiben will sondern alle Bestandteile des Datensatz in eigene divs?
Wäre super, wenn mir da jemand ein Codeschnipsel zeigen könnte.
Danke schonmal!
Gruß,
Frank
hi,
Da ich mich mit Javascript nicht sonderlich auskenne habe ich zunächst einmal eine ganz blöde Frage: wenn ich die PHP Datei aufrufe, bekommt die einen Parameter i mit, wie kann ich den in Javascript auslesen?
Na Du hast doch var i = 3; vorgegeben. Oder woher kommt i sonst?
Die zweite Frage ist etwas komplizierter: die Datei execute.php liefert einen kompletten Datensatz bestehend aus mehreren Feldern zurück. Wie gehe ich vor, wenn ich nicht den ganzen Text in das div "ziel" schreiben will sondern alle Bestandteile des Datensatz in eigene divs?
"Zurück" wie? Content-Type XML oder Text? Falls Text: Trenne die Spalten mit einem Trennzeichen, was es im Text nicht gibt, und zerlege das dann mit Javascript und der split() Methode in ein array, was Du stückweise in die div's schreiben kannst.
Hotte
Na Du hast doch var i = 3; vorgegeben. Oder woher kommt i sonst?
Genau, weil ich eben nicht weiß, wie man die PHP-Variable mit Javascript einlesen kann.
"Zurück" wie? Content-Type XML oder Text? Falls Text: Trenne die Spalten mit einem Trennzeichen, was es im Text nicht gibt, und zerlege das dann mit Javascript und der split() Methode in ein array, was Du stückweise in die div's schreiben kannst.
Schon als Text. Das Problem ist nicht das Speichern und zerlegen sondern wie ich das so machen kann, dass das innerhalb des AJAX-Aufrufs alle 10 Sekunden automatisch passiert.
Hi,
Na Du hast doch var i = 3; vorgegeben. Oder woher kommt i sonst?
Genau, weil ich eben nicht weiß, wie man die PHP-Variable mit Javascript einlesen kann.
Das willst du doch ueberhaupt nicht.
Du uebergibst den Wert 3 an das PHP-Script als Parameter, damit dieses den richtigen Datensatz raussuchen kann.
Und das PHP-Script liefert Daten zurueck, die du dann per JS auswertest.
Wenn du in diesen Daten die 3 immer noch zu brauchen glaubst - dann lasse sie in diesen Daten vom PHP-Script wieder mitliefern.
Das Problem ist nicht das Speichern und zerlegen sondern wie ich das so machen kann, dass das innerhalb des AJAX-Aufrufs alle 10 Sekunden automatisch passiert.
Zeitgesteuerte Aufrufe macht man in JavaScript mit setInterval/setTimeout.
In Kombination mit AJAX sollte man allerdings darauf achten, dass man nicht zu viele Requests auf einmal abfeuert; also bei laenger dauernder Antwort vom Server lieber mal "aussetzen".
MfG ChrisB
Das willst du doch ueberhaupt nicht.
Du uebergibst den Wert 3 an das PHP-Script als Parameter, damit dieses den richtigen Datensatz raussuchen kann.
Gut, dass alle besser wissen, was ich will als ich selbst...
Ich will keine 3 übergeben sondern den Parameter i, der vorher per Post an die PHP Seite übergeben wurde. Lässt sich aber blöd testen, wenn ich nix reinschreibe und ihn ganz leer lasse weil ich nicht weiß wie es geht...
Deswegen hab ich's hart reincodiert, wollen tu ich das aber definitiv NICHT.
Das mit dem zeitlichen Aufrufen versteh ich nicht. Wie kann ich denn konkret erreichen, dass der PeriodicalUpdater immer auch das Ergebnis in mehrere unterschiedliche div's reinschreibt? Allgemeine Hinweise zu dem Thema hab ich in den letzten beiden Tagen leider schon jede Menge bekommen, ein konkretes Beispiel konnte mir aber leider noch niemand liefern. =(
Hi,
Gut, dass alle besser wissen, was ich will als ich selbst...
Na ja, man muss ja raten - wenn du es selbst noch nicht so genau weisst ...
Ich will keine 3 übergeben sondern den Parameter i, der vorher per Post an die PHP Seite übergeben wurde.
Wenn er bereits uebergeben wurde, wieso willst du ihn dann noch mal uebergeben?
Deswegen hab ich's hart reincodiert, wollen tu ich das aber definitiv NICHT.
Was dann?
Liefere doch mal eine klare Beschreibung, was also Parameter von wo (und woher stammend) nach wo uebergeben werden, und was als Ergebnis geliefert werden soll
Wie kann ich denn konkret erreichen, dass der PeriodicalUpdater immer auch das Ergebnis in mehrere unterschiedliche div's reinschreibt?
Z.B. in dem du auch das jeweilige Div-Element als Parameter an die JavaScript-Funktionalitaet, die neue Inhalte anfordert und wo rein schreiben soll, uebergibst.
MfG ChrisB
Was dann?
Liefere doch mal eine klare Beschreibung, was also Parameter von wo (und woher stammend) nach wo uebergeben werden, und was als Ergebnis geliefert werden soll
Ich rufe eine Seite wie folgt auf: blubb.php?tollerparameter=3 und will den Parameter tollerparameter verwenden, um ihn dem AJAX-Aufruf mitzugeben.
Der ist natürlich nicht immer 3 sondern immer anders.
Z.B. in dem du auch das jeweilige Div-Element als Parameter an die JavaScript-Funktionalitaet, die neue Inhalte anfordert und wo rein schreiben soll, uebergibst.
Bin jetzt schon einen Schritt weiter:
var myAjax = new Ajax.PeriodicalUpdater(
'ziel',
'execute.php', {
method: 'post',
parameters: 'i=' + document.formular.spielnummer.value,
frequency: 2,
onSuccess: function() {
feld1.innerHTML = 'test';
}
}
);
Das Feld 1 wird jetzt mit 'test' beschrieben. So kann ich beliebig viele Felder beschreiben. Das letzte verbliebene Problem ist jetzt nur noch, wie ich jetzt in feld1 das reinschreibe, was der PeriodicalUpdater in das Feld 'ziel' schreibt. Versucht hab ich
feld1.innerHTML = document.getElementById(ziel).innerHTML
...allerdings funktioniert das nicht.
Mahlzeit Frank S.,
Ich rufe eine Seite wie folgt auf: blubb.php?tollerparameter=3
Und diese "Seite" erzeugt dann HTML mit eingebetteten Javascript-Code? Und in diesem Javascript-Code willst Du dann den Wert des Parameters "tollerparameter" verwenden?
und will den Parameter tollerparameter verwenden, um ihn dem AJAX-Aufruf mitzugeben.
Es gibt zwei Möglichkeiten:
1.) Du kannst in Javascript den <http://de.selfhtml.org/javascript/objekte/location.htm#search@title=Querystring des aktuellen Dokuments> auslesen und ihn dann z.B. <http://de.selfhtml.org/javascript/objekte/string.htm#split@title=in seine Bestandteile aufsplitten>.
2.) Du kannst natürlich auch in PHP ein kleines Bisschen Javascript-Code generieren, das dafür sorgt, dass der Client den gewünschten Wert in einer (globalen) Javascript-Variable zur Verfügung hat. Was könnte wohl beim Browser ankommen, wenn Du z.B. folgenden PHP-Code ausprobierst:
<?php
printf('<script type="text/javascript">\nvar tollerparameter = %d;\n</script>\n', $_GET['tollerparameter']);
?>
Der ist natürlich nicht immer 3 sondern immer anders.
Klar.
MfG,
EKKi