如何使用jquery从多维json数组中提取值,以根据第一个下拉列表的选定值填充第二个下拉列表?

时间:2014-01-19 11:57:11

标签: php jquery arrays json

我有一个生成json数组的php文件,我把这个json数组写入文件 results.json

$jsonData = file_get_contents("/json/results.json");
$jsonDataObject = json_decode($jsonData, true);

<script>
var jsonObj = '<?php echo $jsonData;?>';
alert(jsonObj); //Produces the following output

{"cisco":["Port1/1","Port1/2","Port1/3"],
"Juniper":["Port2/1","Port2/2"],
"Huawei":["Port3/1","Port3/2","Port3/3","Port3/4"]
}

我想从这个数组中构建两个下拉列表,第一个下拉列表应该只有像cisco,juniper,huawei等一样的键......

我使用以下代码完成了此操作:

<?php 
foreach($jsonDataObject as $key => $value)
{ 
?> 
<option value="<?php echo $key; ?>"><?php echo $key ; ?>
</option> 
<?php } 
?> 

我需要将每个键的值拆分为','并使用jquery将它们分配给另一个下拉列表.Iam在此停留了很长时间,我知道有很多类似于此问题的问题。请相信我,我试过了我最好,但仍然卡住,我不想使用ajax来做这个。我想在第一个下拉列表的更改事件中使用jquery这样做。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

$。each(jsonData,function(key,data){...})

答案 1 :(得分:0)

选择一个ID:

<select id="select1">
    <option value="cisco">cisco</option>
    <option value="Juniper">Juniper</option>
    <option value="Huawei">Huawei</option>
</select>

<select id="select2">
</select>

然后你可以使用这段代码:

function updateSelect() {
    var newKey = $("#select1").val();
    $("#select2").empty();

    if(newKey in jsonObj) {
        var tmp = jsonObj[newKey];

        for(i = 0; i < tmp.length; i++)
        {
            $("<option>")
                .attr('value',tmp[i])
                .html(tmp[i])
                .appendTo('#select2');
        }
    }
}

$(document).ready(function() { 
    $("#select1").change(updateSelect);
    updateSelect(); // For initial page load.
});

请参阅fiddle