Hello,
So ich habe das ganze gerade mal eingebaut, funktioniert wunderbar. Die Verzögerung liegt bei 10 Ausführungen meines bash Skriptes pro Sekunde bei unter einer halben Sekunde Verzögerung, ist also völlig in Ordnung.
Hast Du an das Locking und das Flushen gedacht?
Wie übergibt man mehrere Parameter, die per POST gesendet werden sollen, wenn man NICHT die Schreibweise params = "level=10&color=red&blah=blubb" benutzen will?
Zielt die Frage auf mein Vorhaben ab, die "Klick-Koordinaten" auf dem Bild auszulesen?
Das ist mehr eine Erinnerung an mich selbst, das noch herauszufinden...
Jetzt noch Fragen zum Verständnis (damit ich das ganze auch alleine weiterverwenden kann):
var params ="level="+e.value;
legt für die Variable "params" den Wert "level=Wertvon<span id="slidernum">" fest?
Nein, das holt den Wert von e. Und e wird beim Aufruf der anonymen Funktion (Closure) ganz unten übergeben mii document.getElementById('slider')
. Wie das genau funktioniert hat Christian in dem verlinkten Thread zur Autovervollständigung erklärt und steht auch im Wiki unter "Closure".
Aber woher bekommt <span> seinen Wert?
Der wird ihm durch den XHR.response-Handler zugewiesen, der vom PHP-Responder kommt.
"params" wird dann mittels http.send(params); an das php Skript gesendet und taucht da als Variable "level" auf?
Fast richtig. Params tauchen als Postparameter im Responder auf, weil wir ja für den XHR die Methode "POST" vereinbart haben.
Würden wie bei <input type="image"> zwei Variablen ausgegeben, wie kann ich diese dann an php weitergeben?
Indem Du z. B. einen Parameterstring, wie oben beschrieben zusammenbaust. Das kann man aber auch anders machen. Muss ich morgen nochmal suchen. Mit jQuery geht es ganz bequem, hat aber eben eine Menge Overhead für das jQuery-Modul.
Zuletzt noch eine Frage zur Funktion: sollte die Änderung "live" an den Server übertragen werden oder ist es richtig, dass sie erst nach dem loslassen des sliders übergeben wird?
Mit dem Event "change" überträgt der Slider immer erst beim Loslassen, mit dem Event "input" feuert er bei jeder Bewegung in Schrittweite.
Die setTimeout-Geschichte kannst Du beim Slider vermutlich weglassen, wenn die Schrittweite passend gewählt wird. In der professionellen Lichttechnik werden mindestens 760 Schritte zwischen 0 und 100% benötigt, damit man die Differenzen nicht mehr sehen kann. Aber DMX-512-A kann auch nur 8 Bit Auflösung.
Für den Bedienkomfort würde ich daher "input" als Event wählen. Das produziert dann aber etsprechend viele Requests und deine Abfrageschleife muss auch entsprechend schnell sein.
Jetzt reicht es auch mit Fragen, hoffentlich ist es nicht zu viel geworden.
Morgen gerne mehr vom Desktop...
Edit: da ich schon eine Weile an der Antwort schreibe, habe ich deine Antwort erst jetzt gesehen :D. Hatte ich ohnehin gemacht, ich wollte erst sehen, dass das überhaupt funktioniert
In stillem Gedenken an die Demokratie in der Türkei
Da werden wir in den nächsten Monaten ca. 4.000.000 türkische politische Flüchtlinge bekommen
Liebe Grüße
Tom S.
--
Es gibt nichts Gutes, außer man tut es
Andersdenkende waren noch nie beliebt, aber meistens diejenigen, die die Freiheit vorangebracht haben.