我正在使用此问题的接受答案来帮助我使用jQuery从JSON数组构建HTML选择菜单.
我的JSON数组从PHP脚本传递为$ menu,如下所示:
{ "options": [
{ "id":"7","name":"Smith, John"},
{ "id":"4","name":"Jones, Tom"}
]
}
Run Code Online (Sandbox Code Playgroud)
首先,我构建选择菜单的骨架并将其插入页面:
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);
Run Code Online (Sandbox Code Playgroud)
然后我尝试将$ menu数组传递给jQuery,如下所示:
var json = '<?php echo $menu; ?>';
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用链接问题中的示例将选项附加到新创建的选择菜单:
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);
}
Run Code Online (Sandbox Code Playgroud)
选择菜单按预期显示,但不包含任何选项.任何人都可以看到我在哪里犯错误吗?提前致谢.
修订以纳入Rocket的解决方案:
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);
}
Run Code Online (Sandbox Code Playgroud)
你不需要使用eval,甚至不需要使用JSON.parse.JSON是有效的JavaScript代码.你可以这样做:
var json = <?php echo $menu; ?>; // Note: the quotes have been removed.
Run Code Online (Sandbox Code Playgroud)
这将产生以下代码:
var json = { "options": [
{ "id":"7","name":"Smith, John"},
{ "id":"4","name":"Jones, Tom"}
]
};
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它是有效的JavaScript代码.
那你可以做var options = json.options.
| 归档时间: |
|
| 查看次数: |
337 次 |
| 最近记录: |