[英]Iterate through php array in jquery
所以我有一个JSON编码的php数组,并传递给一些JQuery。 基本上,我使用数组中的信息基于另一个下拉列表的值动态更改一个下拉列表的内容。 我对JQuery遇到了一些问题,因为JQuery对我来说还很新。
首先我的PHP:
<?php
$sql = mysql_query("SELECT * FROM menu") or die(mysql_error());
$menuItems = array();
$x = 0;
while($row = mysql_fetch_object($sql))
{
$menuItems[$x]['ID'] = $row->ID;
$menuItems[$x]['parent'] = $row->parent;
$menuItems[$x]['name'] = $row->Name;
$menuItems[$x]['header'] = $row->header;
$menuItems[$x]['Sort'] = $row->sort;
$x++;
}
?>
此代码返回约30个菜单项的数组。
然后我的jQuery:
<script>
var menuItems = <?php echo json_encode($menuItems); ?>;
$('#dropdown1').change(function (){
if($('#dropdown1').val() == 0){
$('dropdown2').children().remove().end()
for(var x = 0; x < menuItems.length; x++){
if(menuItems[x]['header'] == 1){
$('#dropdown2').options[menuItems[x]['sort']] = new Option(menuItems[x]['name'], menuItems[x]['sort']);
}
}
}
});
</script>
我想要做的是更改dropdown1时,删除dropdown2的选项,然后用数组中的特定内容重新填充。
当前,当dropdown1更改但重新填充不起作用时,此代码确实删除了dropdown2的选项。 从测试中可以看出,尽管遍历数组的for循环大约有30项,但它仅循环输入一次,我认为这是我的主要问题。
我在这里做错了什么?
更改为
for(var x = 0; x < menuItems.length; x++){
if(menuItems[x]['header'] == 1){
var option = $('<option />', {
text : menuItems[x]['name'],
value: menuItems[x]['sort']
});
$('#dropdown2 option[value="'+[menuItems[x]['sort']]+'"]').replaceWith(option);
}
}
$('#dropdown2').options[]
无效,因为jQuery没有这些方法,适用于普通JS DOM节点。
因此,从这些评论中,我的意思似乎有些混乱,我深表歉意。 在这种情况下,解释对我来说很有意义,但我一定不能很好地传达一切。
为了消除一点点混乱。 从PHP代码传递到javascript的数组包含了我第二个下拉列表可能需要的所有内容。
许多人指出,.options []是导致代码未执行的原因。 这只是从我发现的另一个示例而来,由于我的有限知识,我认为这是正确的,但事实并非如此。
我改用了.append()函数,现在看来一切正常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.