2016-12-12 4 views
0

Sobald der ausgewählte Wert von dropdown1 geändert wird, muss ich die entsprechenden Daten für dropdown1's ausgewählten Wert auffüllen. Die aufgefüllten Daten müssen an dropdown2 angehängt werden.Ajax-Array wird nicht in Dropdown-Liste aufgefüllt Wählen Sie

Ich überprüfte verwandte Antworten und Fragen dazu und versuchte fast jede mögliche Lösung, aber ich kann es immer noch nicht zum Laufen bringen.

html

<body> 
<select id="dropdown1" class='form-control-static'> 
    <option value="value1">Value 1</option> 
    <option value="value2">Value 2</option> 
</select> 

<select id="dropdown2" class='form-control-static'> 
</select> 

<script src="js/jquery.js"></script> 
<script src="js/externalJavascript.js"></script> 
</body> 

externalJavascript

$('select[name=dropdown1]').change(function (e) { 
     var selected = $('select[name=dropdown1]').val() 
     alert(selected); 

     $.ajax({ 
      type: 'POST', 
      data: { name: selected }, 
      url: 'dbaccess.php', 
      datatype: 'json', 
      success: function(data) { 
       alert(data); 
       var $select = $('#dropdown2'); 
       $.each(data, function(key, value) { 
        $select.append('<option value=' + key + '>' + value.name + '</option>'); 
       }); 
      } 
     }); 
    }); 

dbaccess.php

<?php 
$name = $_POST['name']; 
$name_id = getIdByName($name); 

$names_arr = array(); 
$names_arr = getNamesByNameId($name_id); 
//var_dump($names_arr); 
echo json_encode($names_arr); 
?> 

Die Nachricht Alarm Fenster wieder korrekte Daten wie in SQL-Editor alert(data) zeigt zurückgegeben, wie

von Datenbankdaten gezeigt
[{"name":"My Name 1"},{"name":"My Name 2"},{"name":"My Name 3"}] 

Aber es wird einfach nicht anhängen, um die dropdown2 egal wählen, was ich tue. Ich sehe kein Problem mit der ajax.

Irgendwelche Gedanken oder Ideen? Ich werde jede Hilfe oder Anregung schätzen.

Vielen Dank.

+0

Gibt es Fehler in der Konsole? Findet der Code das Auswahlelement? Geht der Code in die Schleife? console.log() ist dein Freund. Und nicht alle Indizes haben "Namen" in ihnen? – epascarello

Antwort

1

Ihr vollständiger Code ist perfekt, fehlt nur eine Zeile.

Fügen Sie einfach JSON.parse Funktion in Ajax Erfolgsaufruf.

success: function(data) { 
       data = JSON.parse(data); 
       ......... 
      } 
+0

Du bist ein Genie. Ich habe verschiedene Lösungen und Beispiele online ausprobiert, aber keines von ihnen hat mein Problem gelöst. Deine Antwort hat mein Problem gelöst. Vielen Dank. – p3ace

Verwandte Themen