Hallo,
Du könntest einen unsichtbaren iframe als
-->>Kommunikationskanal mit dem Server benutzen.
-->>iframe startet das pingscript und erhält die Daten zurück
gut. ;-)
Mittels Timergesteuertem JavaScript und einer entsprechenden Parameterübergabe beinflusst du die Rückgabewerte vom Server.
-->> ich codiere bis jetzt kein PHP.
Dasselbe kannst du auch mit Perl erreichen.
-->>Ich habe mir dein Beispiel unten angeschaut, habe jedoch
nicht ganz folgen können, welchen Einfluss die Parameter
Die Parameter sind nur eine 'can be' Möglichkeit, wenn du sie nicht brauchst, lass' sie weg.
besitzen. Mir scheint das eine PHP-Variante zu sein (?)
Nein.
Beispiel (ich unterstelle, daß das iframe das Attribut name="myIframe" hat:
-->>wird die Funktion getdata() im iframe geschrieben ?
window.setTimeout("getData()",600000);
function getData() {
document.getElementsByName('myIframe').location.href="datensammler.php?datatype=3&......"
-->>wird hier "ferngesteuert ein iframe erzeugt und direkt mit einem
script (datensammmler.php) gestartet ?
Diese Parameterübergabe ist reines HTML. Die Parameter werden in der URI übergeben, nennt sich afaik GET-Methode. Auf dem Server kannst du sie sowohl mit PHP als auch mit Perl abfragen. Wenn du sie nicht brauchst, dann lasse sie wie gesagt halt weg.
Wie sieht das mit Perl aus? Speziell die Parameter sind mir nicht
geläufig.
Wenn ich heute Abend noch Zeit habe, mache ich dir mal ein Beispiel.
//Der function kannst du auch Werte übergeben, die du in den URI einbauen kannst.
function machWasMitDenNeuenDaten(auch hier könnte der Server neue Daten übergeben) {
// Zugriff: document.getElementsByName('myIframe').data_1
// Du kannst also Serverseitig voll steuern, was diese Funktion macht.
Hier ist mir ein kapitaler Fehler unterlaufen. Auf die JavaScript-Variablen kannst du nur über das Window-Objekt zugreifen, also so:
window.frames(myIframe)[0].data_1
-->>muss man hier zwingend die Werte als Javascripvariablen
erzeugen, um darauf zugreifen zu können ?
Nein, aber das ist IMHO doch der einfachste Weg, wie an meinem kleinen PHP Beispiel gezeigt. In Perl ist das genauso einfach und der Zugriff im Client auf die Daten im iFrame ist auch viel einfacher, da die Funktionen, die auf das DOM zugreifen IMHO langsamer sind als ein direkter Zugriff über das Window-Objekt.
Oder kann man auch über den DOM-Baum zugreifen ?
var obj = document.getElementsByName('myIframe');
X1 = obj.data_1;
alert(X1);
document.getElementById('myTableCell_row_4_col_3').innerHTML = X1;
}
Richtig:
var obj = window.frames('myIframe')[0];
X1 = obj.data_1;
alert(X1);
document.getElementById('myTableCell_row_4_col_3').innerHTML = X1; //Dies soll nur verdeutlichen, wie du eine Tabellenzellen-Matrix bevölkern könntest die z.B. so aussehen könnte:
<table>
<tr>
-----------------------------------------------------------------------------------
<tr> | <td id="myTableCell_row_1_col_1"></td> | <td id="myTableCell_row_1_col_2"></td> | ... </tr>
-----------------------------------------------------------------------------------
<tr> | <td id="myTableCell_row_2_col_1"></td> | <td id="myTableCell_row_2_col_2"></td> | ... </tr>
-----------------------------------------------------------------------------------
...
-----------------------------------------------------------------------------------
<tr> | <td id="myTableCell_row_n_col_1"></td> | <td id="myTableCell_row_n_col_2"></td> | ... </tr>
-----------------------------------------------------------------------------------
habe versucht, auf die IFrame-Daten zuzugreifen, was jedoch
auch nach 4 Stunden herumprobieren nicht gelang.
Der Übergang in die IFRame-Datei scheint "wie vernagelt".
Wie gesagt, war mein Fehler. Aber an der Stelle habe ich früher auch schon viel Zeit geopfert :(
Die dazugehörigen 2 Dateien kannst Du in meinem letzten
Post zu Cybaer finden. Ich wollte das hier jetzt nicht
doppelt hineinsetzen.
Jupp, werde ich mir noch mal genau ansehen, und wie gesagt, wenn es die Zeit erlaubt, mach ich mal ein kleines Beispiel in Perl.
cu,
ziegenmelker