Moin,
ich experimentiere mit einem Liederbuch im HTML-Format. Master (Chorleiter) und Slaves (Sänger) laden das Buch in den Browser.
Der Master kann auf eine Seite klicken, Liederbuch-Titel und Lied-Nr. wird per Ajax und php in eine Textdatei auf dem Server geschrieben:
http://osmer.de/musik/liederbuecher/kalles_liederbuch_test.htm#lied_04
Das funktioniert, in Filezilla kann ich den Inhalt der Datei sehen.
Alle Slaves rufen in regelmäßigen Abständen per Ajax diese Datei auf (deshalb stieß ich auf setInterval) und sollen auf die verlangte Seite wechseln.
Jedoch „sieht“ Ajax stets den alten Stand der Textdatei. Was läuft in getLiedtext falsch?
function setLiedtext( lied_URL ) {
//alert( "[" +lied_URL +"]" );
/* *******************************************************
* Initialisierung beim ersten Aufruf nach Programm-Start
* ******************************************************* */
if ( setLiedtextVar.requestObj == "leer" ) {
setLiedtextVar.requestObj = makeRequestObject( "setLiedtext.js - setLiedtext" ); // makeRequestObject() ist in standard.js
}
var url = "./ajax/setLiedtext.php?lied_URL=" +encodeURIComponent(lied_URL);
console.log( "[" +url +"]" );
//setLiedtextVar.obj.title = "setLiedtext.js " + url;
setLiedtextVar.requestObj.open('post', url, true); // Request öffnen
setLiedtextVar.requestObj.send(null); // Request senden
/*
setLiedtextVar.requestObj.onreadystatechange = setLiedtextZeigen;
*/
}
function getLiedtext() {
/* *******************************************************
* Initialisierung beim ersten Aufruf nach Programm-Start
* ******************************************************* */
if ( setLiedtextVar.requestObj == "leer" ) {
setLiedtextVar.requestObj = makeRequestObject( "setLiedtext.js - getLiedtext" ); // makeRequestObject() ist in standard.js
}
var url = "./ajax/liederbuch.txt";
setLiedtextVar.requestObj.onreadystatechange = setLiedtextZeigen;
setLiedtextVar.requestObj.open('get', url, true); // Request öffnen synchron (false) oder asynchron (true)
setLiedtextVar.requestObj.send(null); // Request senden
console.log( "[" +url +"]" );
}
function setLiedtextZeigen() {
// Request-Status hat sich geaendert
if ( setLiedtextVar.requestObj.readyState == 4 && setLiedtextVar.requestObj.status == 200 ) {
console.log( setLiedtextVar.requestObj.responseText );
}
}
Danke schon mal.
Pfiffiger wäre wohl, dass die Slaves nicht ständig vergeblich (im Sinne: Es hat sich nichts geändert) die Datei abrufen, sondern im Falle einer Änderung informiert werden.
Diese Technik kenne ich aber nicht. Geht sowas bei 30 - 50 Slaves und wo kann ich mich einlesen?
Linuchs
Edit: Habe die Textdatei gelöscht. Ajax meldet wacker weiter alle 10 sec den alten Stand. Scheint überhaupt nicht zu lesen.