ToshiOzumi: Jquery: Auswahl eines durch html() erzeugtes Formular

Hallo,

es ist jetzt bestimmt eine ziemlich einfache Frage.
Ich habe mehrere Dropdownlisten die Dynamisch befühlt werden sollen. Die Erste Auswahl ist vorgegeben und der Rest soll dann abhängig von der Auswahl aus der Datenbank befühlt werden.

Die erste dynamische Auswahl funktioniert ganz gut. Bei der Zweiten Auswahl komme ich nicht auf value. Fehler habe ich da schnell gefunden Quelltext wird nicht erzeugt sondern einfach per DOM der Inhalt eingefügt. Wie kann ich da auf den Ausgewählten Objekt zugreifen?

So jetzt zu meinem Code:

  
$(document).ready(function()  
{  
	$('#gewerke').change(function()  
	{  
		$.post('../Script/Unterkategorien.php',{Gewerk:$('#gewerke').val()}, function(data,status)  
		{  
    		$('#unterkategorie').append(data);  
		});  
	});  
	$('#unterkategorie').change(function()  
	{  
		$.post('../Script/Kostenstellen.php',{Unterkategorie:$('#unterkategorie').val(),Gewerk:$('#gewerke').val()}, function(data,status)  
		{  
			$('#kostenstellen').html(data);  
		});  
	});  
});  

  
<div>  
<h3>Gewerk</h3>  
<form >  
<select size="1" id="gewerke" >  
 <option value="" disabled selected style="display:none;">Gewerke</option></select>  
</form>  
  
<form>  
<select id="unterkategorie">  
 <option value="" disabled selected style="display:none;">Gewerke</option>  
</select>  
</form>  
</div>  
<div id="kostenstellen">  
</div>  

in unterkategorien.php wird Einfachheit halber folgendes ausgegeben.

<?php echo ('<option value="1" >Allgemein</option><option value="2" >Fliesenleger</option><option value="3" >Putz und Trockenbau  
</option><option value="4" >Maler</option><option value="5" >Garten und Landschaftsbau</option><option value="6" >Bodenleger (inkl. Estrich)</option><option value="7" >Hochbau</option>'); ?>

in Kostenstellen.php steht folgendes

<?php  
$gew=$_POST['Gewerk'];  
$unter=$_POST['unterkategorie'];  
echo ('Sie haben als Gewerbe '.$gew.' gewählt und als unterkategorie '.$unter.'!');  
?>
  1. @@ToshiOzumi:

    nuqneH

    in unterkategorien.php wird Einfachheit halber folgendes ausgegeben.

    <?php echo ('<option value="1" >Allgemein</option><option value="2" >Fliesenleger</option><option value="3" >Putz und Trockenbau

    </option><option value="4" >Maler</option><option value="5" >Garten und Landschaftsbau</option><option value="6" >Bodenleger (inkl. Estrich)</option><option value="7" >Hochbau</option>'); ?>

      
    Warum wird das mit `echo()`{:.language-php} ausgegeben, wenn gar nicht Variables darin vorkommt? Das sollte ohne `<?php ?>`{:.language-php} im Quelltext stehen.  
      
      
    
    > in Kostenstellen.php steht folgendes  
    > ~~~php
    
    <?php  
    
    > $gew=$_POST['Gewerk'];  
    > $unter=$_POST['unterkategorie'];  
    > echo ('Sie haben als Gewerbe '.$gew.' gewählt und als unterkategorie '.$unter.'!');  
    > ?>
    
    

    Kapitalfehler! Du darfst Werte zweifelhafter Herkunft NIEMALS unbehandelt in HTML ausgeben!

    Außerdem ist es unsinnig, die POST-Werte in Variablen umzukopieren.

    Und man sollte PHP in HTML schachteln, nicht andersrum.

    Der Code sollte so aussehen:

    <p>Sie haben als Gewerbe [code lang=php]<?php echo htmlspecialchars($_POST['Gewerk']); ?> gewählt und als Unterkategorie <?php echo htmlspecialchars($_POST['unterkategorie']); ?>.</p>[/code]

    (oder in Kurzschreibweise mit <?= ?>)

    Für dein JavaScript-Problem erstellst du bitte ein Online-Beispiel.

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
    1. Tach!

      Kapitalfehler! Du darfst Werte zweifelhafter Herkunft NIEMALS unbehandelt in HTML ausgeben!

      Die Herkunft ist irrelevant. Jegliche Ausgabe muss kontextgerecht erfolgen.

      dedlfix.

  2. Tach!

    es ist jetzt bestimmt eine ziemlich einfache Frage.

    Die einfache Antwort dazu ist: Verwende einen Debugger und schau dir an was passiert.

    Jeder aktuelle Browser hat so einen eingebaut. Setze Breakpoints und analysiere die Inhalte von Variablen und Ausdrücken durch Maus draufhalten.

    Fehler habe ich da schnell gefunden Quelltext wird nicht erzeugt sondern einfach per DOM der Inhalt eingefügt. Wie kann ich da auf den Ausgewählten Objekt zugreifen?

    Für den Browser ist nur das DOM relevant. Der Quelltext im ausgelieferten Dokument ist nur das Transportmedium mit Anweisungen, aus denen dann das DOM erzeugt wird. Danach ist der völlig irrelevent. Das Zugreifen auf Elemente erfolgt im DOM. Dabei ist es egal, ob das Element vorher als Zeichenfolge im Dokument stand oder zur Laufzeit ins DOM gehängt wurde.

    <select size="1" id="gewerke" >
    <option value="" disabled selected style="display:none;">Gewerke</option></select>

    Ich nehme einfach mal an, dass da weitere Option-Elemente drin sind, denn sonst kann es da gar kein Change-Event geben.

    Dann gibts da noch Groß/Kleinschreibungsfehler, die du aber den Fehlermeldungen entnehmen kannst. Ansonsten kann ich grad nicht sehen, was das Problem ist.

    dedlfix.

  3. Hallo

    @Gunnar Bittersmann
    zu unterkategorien.php und Kostenstellen.php: es ist natürlich nicht alles was da gemacht wird. Dort wird es auf die Datenbank zugegriffen und passenden Daten raus gelesen ich habe es nur einfachheitshalber so gekürzt als echo() hier geschrieben. Deswegen da auch die Umkopierung in die variablen.

    @dedlfix
    ja ich verwende auch Debugger bzw. Firebug in Firefox. Es läuft auch problemlos durch. Da ich aber
    Gewerk:$('#gewerke').val() verwende um auf ubergabewert zuzugreifen brauche ich wie ich verstehe einen HTML-Quelltext.

    Theoretisch gesehen müsste ich nur per DOM irgendwie auf den Ausgewählten Objekt zugreifen. Leider habe ich in dem Punkt nichts gefunden. Ich kann zwar auf jedes Element zugreifen aber irgendwie weiß ich nicht welches davon ausgewählt ist.

    Groß/Kleinschreibung werde ich zwar jetzt nochmal prüfen aber ich glaube nicht das es daran lag.

    1. Tach!

      @Gunnar Bittersmann
      @dedlfix

      Sammelantworten machen die Struktur kaputt. Es ist dann schwieriger, einem Diskussionsstrang zu folgen. Bitte antworte jeweils auf das Posting, auf das du dich beziehst.

      Da ich aber » Gewerk:$('#gewerke').val() verwende um auf ubergabewert zuzugreifen brauche ich wie ich verstehe einen HTML-Quelltext.

      Es existiert zur Laufzeit im Browser kein Quelltext, der noch irgendeine Relevanz hätte. Der ist umgeformt zum DOM.

      Theoretisch gesehen müsste ich nur per DOM irgendwie auf den Ausgewählten Objekt zugreifen. Leider habe ich in dem Punkt nichts gefunden. Ich kann zwar auf jedes Element zugreifen aber irgendwie weiß ich nicht welches davon ausgewählt ist.

      Suchwörter: jquery select value

      .val() ist schon richtig. Und ich hab auch kein generelles Problem deinen Code nachzuvollziehen. Ist denn das Problem in dem von dir hier präsentierten Code vorhanden?

      Groß/Kleinschreibung werde ich zwar jetzt nochmal prüfen aber ich glaube nicht das es daran lag.

      Zumindest in dem gezeigten COde hast du Unterkategorie versendet, aber nach $_POST nach unterkategorie abgefragt.

      dedlfix.

      1. Hallo dedlfix,

        Zumindest in dem gezeigten COde hast du Unterkategorie versendet, aber nach $_POST nach unterkategorie abgefragt.

        dedlfix.

        werde gleich nochmal prüfen. Vielleicht ist das schon die Lösung des Problems.

      2. Hallo

        es sieht so aus, das es wirklich an Groß u. Kleinschreibung gelegen hat.

        Nochmal vielen Dank.

        ToshiOzumi