Linuchs: Master-Slave Problem Liederbuch: Master-Seite soll nicht neu geladen werden

Beitrag lesen

problematische Seite

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?

testchor.htm:

...
<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.

regie.js:

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