Hilfe bei JavaScript

BaseBallBatBoy

Erfahrenes Mitglied
Hey!

Ich habe ein DropDown Feld, bei welchem ich den selected value auslesen möchte, jedes mal bevor meine AJAX Funktion ausgeführt wird. Leider klappt das so nicht wie ich es im moment habe. Als type bekomme ich immer nur "undefined" zurück. Wär echt froh wenn mir jemand weiterhelfen könnte!

HTML:
<div>
<select id="usertype" name="usertype" >
<option value="fan">Fan</option>
<option value="band">Band</option>
<option value="location">Location</option>
</select>
</div>

<div style="float:left; width:15em;">Profilname eingeben</div>
<input type="text" id="meinName" name="meinName" style="width:200px;" />
<div id="autocompleteResult" class="auto_complete" ></div>

<script type="text/javascript">
var type=document.getElementById('usertype').selected;
new Ajax.Autocompleter("meinName", "autocompleteResult", "ajax/showAutocompleteName.php?type="+type);
</script>
 
Javascript:
var type=document.getElementById('usertype').options[document.getElementById('usertype').selectedIndex].value;

€dit: Etwas komplizierter xD
 
Zuletzt bearbeitet von einem Moderator:
erstmal danke für eure schnellen antworten!

nun zu meinem problem: ich habe beide vorschläge ausprobiert, aber nun bekomme ich immer nur "fan" als value zurück. auch wenn ich tatsächlich etwas anderes ausgewählt habe. wenn ich aber zB. die reihenfolge der options ändere und zB. band zu oberst instelle, bekomme ich dann immer nur "band" zurück. also offensichtlich holt der sich immer nur die oberste option ohne zu schauen ob die selected ist oder nicht...

ps: das alles gilt übrigens für beide von euch vorgeschlagenen lösungen...
 
Bei dem Code den du uns gegeben hast, ist das auch klar.

Du führst den Javascriptcode direkt nach dem Formular aus, sodass bei diesem Snippet automatisch immer die erste Auswahl genommen wird, da du keine Auswahl vorselektiert hast.
 
ja? naja das war mir zB. nicht klar...

dann kannst du mir vielleicht sagen, wie ich es anstellen muss, dass ich bei meinem AJAX aufruf dann auch den aktuellen selected value habe (oder index, spielt mir eigentlich keine rolle)?

meine idee bei dem ganzen ist ja, ich wähe einen typ aus zB. "band" und gebe dann im inputfeld einen buchstaben ein, zB. "B". als antwort von AJAX erwarte ich dann so etwas wie "Bob Dylan", "Bloc Party" etc. wenn ich dann den typ auf "location" ändere sollte mir das AJAX etwas in der richtiung von "Bills Kneipe" etc. liefern. Das AJAX ist ja auch gar kein problem, das funktioniert, aber der typ ist einfach nicht der aktuelle.
 
@BaseBallBatBoy: Bitte halte dich auch in deinen Folgebeiträgen an die Netiquette (Nr.15) bzgl. der Groß- und Kleinschreibung - vielen Dank! :)

mfg Maik
 
Klar, hier würde ich mit dem onchange-Event für die Selectliste und dem onkeyup-Event für den Inputtext arbeiten.

Beide rufen die gleiche Funktion auf:

Javascript:
function ajax_request {
 //Dein Request
}
 
Zuletzt bearbeitet von einem Moderator:
Moin,

so, wie du das angehen willst, wird das nicht funktionieren.
Der AJAX.Autocompleter erhält seine Ziel-URL bei der Initalisierung, und von aussen heraus kannst du diese nicht mehr ändern.

Aber der Autocompleter von Scriptaculous(ich gehe mal davon aus, dass es sich hier darum handelt) bietet dafür die option callback

darüber kannst du vor dem Senden des Requests noch Änderungen vornehmen, in deinem Fall sollte das ca. so aussehen:
Code:
new Ajax.Autocompleter("meinName", 
                       "autocompleteResult", 
                        "ajax/showAutocompleteName.php",
                        {
                          callback:function()
                          {
                            var q={type:$('usertype').getValue()};
                            q[this.paramName]=$(this.paramName).getValue();
                            return $H(q).toQueryString();
                          }
                        }
                      );
Die Callbackfunktion erweitert die zu Sendenden POST-Daten um den Wert der Auswahlliste...fertsch.
 
1. Ja genau, ich brauche Scriptaculous
2. Ich kannte die callback Funktion bislang nicht, aber es sieht so aus als wäre das genau das was ich gesucht habe!
3. Bislang habe ich im PHP File den Wert per
$type= $_GET["type"];
ausgelesen. Wie muss ich das nun anstellen?
 
Zuletzt bearbeitet:
Zurück