Ich verwende die akzeptierte Antwort auf this question, um mir zu helfen, ein HTML-Auswahlmenü aus einem JSON-Array mit jQuery zu erstellen.Ein JSON-Array aus PHP in einer jQuery-Funktion lesen
ist mein JSON-Array aus einem PHP-Skript als $ Menü und sieht wie folgt geführt:
{ "options": [
{ "id":"7","name":"Smith, John"},
{ "id":"4","name":"Jones, Tom"}
]
}
Zuerst habe ich das Skelett meiner Auswahlmenü erstellen und es in die Seite einfügen:
var div = '<div class="row">';
var label = '<label for="employee">Employee</label>';
var select = '<select name="employee id="employee">';
var close = '</select></div>';
var menu = div + label + select + close;
$('#clicked_link').prepend(menu);
Dann versuche ich die $ Menü Array jQuery wie folgt weitergeben müssen:
var json = '<?php echo $menu; ?>';
Dann versuchen Sie die Optionen I anhängen t er neu wählen Sie das Menü erstellt, mit dem Beispiel aus den linked question:
var options = eval('(' + json + ')');
var length = options.length;
for (var j = 0; j < length; j++)
{
var newOption = $('<option/>');
newOption.attr('id', options[j].id);
newOption.attr('name', options[h].name);
$('#employee').append(newOption);
}
Das Auswahlmenü zeigt wie erwartet, aber es enthält keine Optionen. Kann jemand sehen, wo ich meine Fehler mache? Danke im Voraus.
Überarbeitete Rocket Lösung zu übernehmen:
var json = <?php echo $menu; ?>;
var options = json.options;
var length = options.length;
for (var j = 0; j < length; j++)
{
var newOption = $('<option/>');
newOption.attr('value', options[j].id);
newOption.attr('text', options[j].name);
$('#employee').append(newOption);
}
Danke für die Antwort. Ich habe Ihre Lösung implementiert, bekomme aber das gleiche Ergebnis (ein leeres Auswahlmenü). Ich habe die aktualisierte Version in meiner Frage gepostet. Mache ich auch etwas falsch in meiner Schleife? – cantera
@ cantera25: In Ihrer Schleife haben Sie 'Optionen [h] .list'. Was ist "h"? Auch haben Ihre 'options'-Objekte keine 'list'-Eigenschaft. –
Verstanden - das [h] war ein Tippfehler in der akzeptierten Antwort in der verknüpften Frage, und ich nahm nur an, dass es richtig war. Ich werde das jetzt bearbeiten. Das Ändern nach [j] und das Wechseln zu "Text" und "Wert" innerhalb der Schleife haben den Trick gemacht. Danke nochmal an alle. – cantera