php
  • jquery
  • arrays
  • json
  • 2014-01-19 28 views 0 likes 
    0

    我有一个生成一个JSON数组一个PHP文件,我写这篇文章的JSON数组文件results.json如何使用jquery从多维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"] 
    } 
    

    我想从这个数组建设两个下拉菜单,第一个下拉应该有单独的钥匙像思科,Juniper,华为等.....

    我这个使用下面的代码所做的:

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

    我需要分割上的每个键的值“”并将它们分配到一个nother下拉使用jquery.Iam卡住了很长一段时间,我知道很多类似这样的问题已经问了。相信我我已经尽力了,但我仍然卡住了,我不想用阿贾克斯做到这一点。我会喜欢在第一个下拉列表的变化事件上使用jQuery来做到这一点。

    任何帮助,这是非常感谢。

    回答

    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

    +0

    的完美解决方案:)非常感谢.......我挣扎而所有这一切,使乌拉圭回合的解决方案的工作与我,当我意识到var jsonObj ='<?php echo $ jsonData;?>'实际上应该是没有引号的。感谢您花费大量精力去做小提琴,这非常有帮助 – user3094070

    1

    $。每个(jsonData,功能(键,数据){...})

    相关问题