Ajax Prototype
Rainer
- javascript
Hallo,
ich versuche mich gerade ein wenig an Ajax ;-)
Das Problem: was muss ich bei onchange statt a=?AUSWAHL? schreiben damit die ausgewählte <option> übergeben wird? this() ist es wohl nicht.
Gruß Rainer
<html>
<head>
<script type="text/javascript" src="ajax/prototype.js"></script>
</head>
<body>
<script type="text/javascript">
function change(script,element)
{
new Ajax.Updater(element,script, {
method: 'get'
});
}
</script>
<?php
//KFZ - Hersteller
include("tmpl/connect.php");
?>
<select name="KFZHersteller" onchange="change('ajax/ajax.php?mod=KFZTyp&a=?AUSWAHL?','KFZTyp');">
<option value="" selected>[ Bitte auswählen ]</option>
<?php
$sql = "SELECT ID,Hersteller FROM key_kfz_hersteller ORDER BY Hersteller";
$res = mysql_query($sql);
while($H = mysql_fetch_row($res)):
?>
<option value="<?php echo"$H[0]"; ?>"><?php echo"$H[1]"; ?></option>
<?php endwhile; ?>
</select>
<br />
<div id="KFZTyp">
</div>
</body>
</html>
ich versuche mich gerade ein wenig an Ajax ;-)
Womit dein Problem aber eher weniger zu tun hat.
Das Problem: was muss ich bei onchange statt a=?AUSWAHL? schreiben damit die ausgewählte <option> übergeben wird? this() ist es wohl nicht.
Nein, es ist this.http://de.selfhtml.org/javascript/objekte/options.htm@title=options[this.selecedIndex]
this ist keine Funktion.
Struppi.
Hallo Struppi,
wie muss ich es denn schreiben?
<select name="KFZHersteller" onchange="change('ajax/ajax.php?mod=KFZTyp&a=this.options[this.selectedIndex]','KFZTyp');">
geht so nicht. Ín der ajax.php gebe ich zur Kontrolle den Query als String in das <div id="KFZTyp"> zurück. Dieser sieht dann so aus:
SELECT ID,Bezeichnung,Kw,PS,ccm FROM key_kfz_typ WHERE HerstellerID = 'this.options[this.selectedIndex]' ORDER BY Bezeichnung
Also wird nicht der Wert der ausgewählten <option> per Get gesendet sondern this.xxxx als String
Hallo Struppi,
wie muss ich es denn schreiben?
<select name="KFZHersteller" onchange="change('ajax/ajax.php?mod=KFZTyp&a=this.options[this.selectedIndex]','KFZTyp');">
geht so nicht. Ín der ajax.php gebe ich zur Kontrolle den Query als String in das <div id="KFZTyp"> zurück. Dieser sieht dann so aus:
SELECT ID,Bezeichnung,Kw,PS,ccm FROM key_kfz_typ WHERE HerstellerID = 'this.options[this.selectedIndex]' ORDER BY Bezeichnung
Also wird nicht der Wert der ausgewählten <option> per Get gesendet sondern this.xxxx als String
Hallo,
Du übergibst ja auch einen String:
'ajax/ajax.php?mod=KFZTyp&a=this.options[this.selectedIndex]'
Versuch doch mal:
'ajax/ajax.php?mod=KFZTyp&a=' + this.options[this.selectedIndex]
Statt this.options[this.selectedIndex] geht übrigens auch this.value
Gruß!
Statt this.options[this.selectedIndex] geht übrigens auch this.value
In aktuellen Browsern (zumindest ist mir keiner bekannt, der das nicht so umsetzt)
Struppi.
Danke,
das wars. Mit '+ this.xxxx +' Strings vebinden bzw. Werte in Strings einbauen.
Gemerkt für alle Ewigkeit ;-)
Gruß Rainer
das wars. Mit '+ this.xxxx +' Strings vebinden bzw. Werte in Strings einbauen.
Gemerkt für alle Ewigkeit ;-)
Hoffentlich nicht, denn früher oder später wirst du so Probleme bekommen.
Struppi.
Also wird nicht der Wert der ausgewählten <option> per Get gesendet sondern this.xxxx als String
JS interpoliert keine Strings in Anführungszeichen. Variabeln müssen ausserhalb stehen. Auch musst du natürlich aufpassen, dass die Zeichen richitg kodiert werden, was aber meines Wissen prototype eigentlich macht. Da gibt es doch auch einen Parameter für die URL Parameter in Prototype, oder?
Struppi.