Parameterübergaber nach jQuery funktioniert nicht

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Parameterübergaber nach jQuery funktioniert nicht

    Hallo zusammen,

    folgendes Problem habe ich beim dynamischen erzeugen von Dropdown's.
    Ziel ist es, nach der Auswahl im ersten Dropdown, automatisch das nächste Dropdown mit den relevanten Daten zu füllen. Nach erfolgtem Ausfüllen des Forms, werden die Daten in der DB gespeichert.

    Hier das Form:
    PHP-Code:
    echo "<h1>Eintrag in Datenbank hinzuf&uuml;gen:</h1><br /><br />";
    echo 
    "<form action='index.php?ziel=eintragen' method='post'>";
    echo 
    "<table id='eintragen'>";
    echo 
    "<tr>";
        echo 
    "<td>Bereich:</td>";
        echo 
    "<td class='leerspalte'></td>";
        echo 
    "<td><!--label for='bereich'></label--><select name='bereich' id='bereich'><option>-</option>
                                         <option>Hardware</option>
                                         <option>Software</option>
                                         <option>Netzwerk</option></select></td>"
    ;
    echo 
    "</tr>";
    echo 
    "<tr class='leerzeile'><td></td></tr>";
    echo 
    "<tr>";
        echo 
    "<td>Kapitel:</td>";
        echo 
    "<td class='leerspalte'></td>";
        
        
        echo 
    "<td><!--label for='kapitel'></label--><select name='kapitel' id='kapitel'></select></td>";
        
        
        
    echo 
    "</tr>";    
    echo 
    "<tr class='leerzeile'><td></td></tr>";    
    echo 
    "<tr>";
    ............. (
    es folgen noch ein paar Felder, die aber hierfür irrelevant sind

    Hier das JS dazu, steht ganz am Ende der Datei des Forms
    Code:
    <script type="text/javascript" src="/js/jQuery.js"></script>
    <script type="text/javascript" charset="utf-8">
    $(function(typ){
      $("select#bereich").change(function(){
        $.getJSON("/js/rubriken.php",{id: $(this).val(), ajax: 'true'}, function(j){
          var options = '';
          for (var i = 0; i < j.length; i++) {
            options += '<option>' + j[i].optionDisplay + '</option>';
          }
          $("select#kapitel").html(options);
        })
      })
    })
    </script>
    Zur Vollständigkeit hier noch das Skript, das den Parameter erhalten soll
    PHP-Code:
    <?php
    require_once("../functions/db_connection.php");

    $query "SET CHARACTER SET utf8";
    $result mysql_query($query);
    if (!
    $result)
    {
        die (
    'Ungültige Abfrage: ' mysql_error());
    }

    $query "SELECT DISTINCT kapitel FROM rubriken WHERE bereich = '".$_GET['id']."'";
    $result mysql_query($query);
    if (!
    $result)
    {
           die (
    'Ungültige Abfrage: ' mysql_error());


    $bla true;
    $var "[{optionDisplay: '-'}, ";
    while (
    $row mysql_fetch_assoc($result))
    {
        if (
    $bla$bla false;
        else 
    $var $var ", ";
        
    $var $var "{optionDisplay: '".$row['kapitel']."'}";
    }
    $var $var "]";
    echo <<<HERE_DOC
    $var
    HERE_DOC;
    ?>
    Die rubriken.php funktioniert. Wenn ich im Query einen der drei Bereiche vorgebe (Hardware, Software oder Netzwerk) kommen die Daten auch im Form an. Also, hängt es nur daran, den Parameter in die rubriken.php zu bekommen.

    Kann mir jemand weiterhelfen ???

    Danke ! ! ! !
    Gruß

    Michael

  • #2
    Das hier ist falsch:
    PHP-Code:
    $(this).val() 
    Da muss was hin à la option:selected und dann val(). Bin aber kein jQuery-Experte.

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Ist der Pfad richtig? Im Javascript Ordner ein PHP File? Das this.val ist richtig.

      Sonst versuchs mal mit $.ajax da kannste auch json als typ angeben.
      Zuletzt geändert von PitPanda; 20.07.2011, 21:48.

      Kommentar


      • #4
        Die php-Datei ist im benannten Pfad vorhanden. Das - wird ja auch geliefert.
        Das mit dem $.ajax und json verstehe ich nicht. Was muss ich da wo einsetzen ???
        Gruß

        Michael

        Kommentar


        • #5
          Wenn ich diese Parameterübergabe jetzt mal "überbrücke" un mit einem festen Wert aus dem Dropdown arbeite, wird komischerweise immer der letzte Wert der eingelesenen Optionen angezeit und nicht der "-", der aber eigentlich als erste Option übergeben werden. Woran kann das denn liegen ???
          Gruß

          Michael

          Kommentar


          • #6
            1. Für bessere Kontrolle (während dem Debugging) verwende $.ajax anstatt .getJSON
            2. Verwende json_encode($array) um dein JSON-Objekt zusammen zu bauen. Die Daten vorher in einem normalen PHP-Array speichern.
            3. Benutze <option selected="selected"> um das vorausgewählte Element der <select>-Liste zu definieren
            4. Verwende $(document).ready(function() {...}); um dein jQuery-Script zu laden
            5. Gib in deinem PHP-Skript als mit header() den Content-Type "application/json" an.
            6. Schreib "id" und "ajax" in den Parameter-Daten in Anführungszeichen

            Das sind nicht unbedingt Lösungen für dein Problem, aber das alles solltest du dir definitiv einprägen... Vielleicht löst ein Punkt dein Problem ja sogar.
            This is what happens when an unstoppable force meets an immovable object.

            Kommentar

            Lädt...
            X