Perl kontra Javascript
Roger
Hallo!
Kann ich eine in Javascript gewonnene Variable in Perl weiterbenutzen?
(Perlscript erzeugt eine HTML Datei mit Javascript Code) dabei ist es wichtig, das eben eine Variable an Perl übergeben wird um damit eine Sub aufzurufen.
Eigentlich möchte ich die mit <select name="select" onChange="test(this.options[this.selectedIndex].value)"> bekommene Variable das Script dazu bringen den entscheidenden Text darunterzuschreiben. Mit Javascript und document.writeln wird eine neue Seite erzeugt - das will ich aber nicht. Der Text soll eben nach der Auswahl im Menü darunter erscheinen...
knifflig?
Danke im voraus. Roger.
Hallo!
Also entweder rufst Du per JS wieder das Perl-Skript auf, dass dann eine neue Seite aufbaut - oder aber Du machst eine (leicht komplizierte, aber das wird) Konstruktion mit <div> bzw. <layer> und DTHML, so dass Du in den Bereich, wo der Text erscheinen soll, sowohl in NN als auch in IE dynamisch schreiben kannst.
Beim IE mit .innerHTML und bei Netscape per document.layers.document.write...
Dazu gibt es viel im Archiv, wahrscheinlich auch in der Auslese, und am allerwahrscheinlichsten bekommst Du auch noch 3 weitere Antworten mit ein paar Links :-)
Im ganz grossen Notfall poste ich auch ein Beipielskript - das aber auch schon im Archiv lagert.
Gruesse,
Bio
Hallo Roger
Die Wertübergabe aus Javascript an das Perlskript erfolgt über die CGI-Schnittstelle.
Dies kann in 2 Varianten erfolgen:
Variante 1:
Du setzt in Javascript direkt den Perlskriptaufruf mit allen Parametern zusammen und lädst die Seite in ein Frame:
top.['ContentFrame'].location.href="../cgi-bin/DeinSkript.pl?param1=xy&var=" + deineVariable;
Variante 2:
Du definierst in Deinem Frame ein Formular mit verstekten Feldern (input-type=hidden), füllst das Formularfeld mit JavaScript aus und sendest das Formular ab.
HTML:
<form action="../cgi-bin/DeinSkript.pl" method="post" name="TestForm" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="param1" value="xy">
<input type="hidden" name="var" value="">
</form>
JavaScript:
document.TestForm.var = deineVariable;
document.Testform.submit();
Die Variante 2 hat gegenüber der Variante 1 den Vorteil, dass beide Übertragungs-Methoden (GET und POST) verwendet werden können, somit die Anzeige Deiner Übergabevariablen in der URL bei der Verwendung von POST unterdrückt werden kann.
Weiter musst Du bei der Variante 2 die Werte _nicht_ URL-Encoden, da dies vom Browser vorgenommen wird (falls Du das Attribut in dem Formtag definiert hast).
Grüsse
Tom