Moin,
ich bastle an folgender Anwendung:
Beliebig viele Personen eines Chores laden das Liederbuch online auf ihr Tablet.
http://osmer.de/musik/liedtexte/testchor.htm
Der Dirigent lädt es sich mit dem Parameter ?master=1
und kann auf einen Titel klicken, dessen Nummer per Ajax an den Server geschickt und in einer Datei gespeichert wird.
Alle Liederbücher (Slaves) fragen im 10-sec-Takt per Ajax den Server nach der aktuellen Nummer. Wenn sie sich von der zwischengespeicherten unterscheidet, wird das Liederbuch auf diesen Titel positioniert.
Problem: Wenn Master die neue Nummer abschickt, wird sein Liederbuch neu geladen. Warum?
...
<a class=regie onclick="javascript:regie_sende( 'text','#lied_01' )" title="Nr. 1 an Slaves senden"></a>
...
Statt <a>
habe ich es auch mit <div>
versucht.
Das request-Objekt wird in standard.js eingerichtet.
function regie_sende ( art, nr ) {
// art = text / noten
// nr = #lied_09
if ( typeof request == "undefined" ) makeRequestObject( 'regie_sende' ); // in css/standard.js wird Objekt namens "request" erzeugt
var url = "http://osmer.de/musik/ajax_regie.php?art=" +art +"&nr=" +encodeURIComponent(nr);
request.open('post', url, true); // Request öffnen
request.send(null); // Request senden
//request.onreadystatechange = regie_empfange; // Request auswerten
//alert( "["+url+"]" );
alert( "["+location.href+"]" );
}
function regie_abrufen () {
// diese Funktion wird alle 10 sec aufgerufen von 2018_shanty_projektchor_a4.htm
if ( typeof request == "undefined" ) makeRequestObject( 'regie_sende' ); // in css/standard.js wird Objekt namens "request" erzeugt
var url = "http://osmer.de/musik/ajax_regie.php?art=abrufen";
request.open('post', url, true); // Request öffnen
request.send(null); // Request senden
request.onreadystatechange = regie_empfange; // Request auswerten
//alert( "["+url+"]" );
}
var regie_anker = '';
function regie_empfange () {
// http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp
// The onreadystatechange event is triggered every time the readyState changes.
if ( request.readyState == 4 && request.status == 200 ) {
// alert( "[" + request.responseText + "]" );
if ( regie_anker != request.responseText ) {
regie_anker = request.responseText;
location.href = regie_anker; // z.B. #lied_06
}
}
}
Die aktuell gespeichert Nummer kann abgerufen werden mit
http://osmer.de/musik/ajax_regie.php?art=abrufen
(Damit sich mehrere Chöre nicht "beißen", muss ich noch eine Projekt-Bezeichnung einführen)
Gruß, Linuchs