2016-07-15 2 views
1

j- 쿼리를 사용하는 다른 드롭 다운의 선택에 따라 드롭 다운을 채울 필요가있는 스크립트를 작성했습니다. 그러나 첫 번째 드롭 다운을 선택하면 다른 드롭 다운에 데이터가 표시되지 않습니다. 용서해주십시오. 내가 어딘가에 잘못 갔다면 나!데이터가 표시되지 않는 드롭 다운의 인구

script.html

<div class="form-group"> 
    <select id="json-one" class="form-control"> 
    <option selected="" value="base">Please Select</option> 
    <option value="Doctor">Doctor</option> 
    <option value="Engineer">Engineer</option> 
    <option value="Lawyer">Lawyer</option> 
    </select> 
</div> 

<div class="form-group"> 
    <select id="json-two" class="form-control"> 
     <option>Please choose from above</option> 
    </select> 
</div> 


<script> 
    var data = { 
"Doctor":"General,specilist", 
"Engineer":"Computers,electronic" 
"Lawyer":"Civil,Criminal" 
}; 
$("#json-one").change(function() { 

       var $dropdown = $(this); 

       //$.getJSON("data.json", function(data) { 

        var key = $dropdown.val(); 
        var vals = []; 

        switch(key) { 
         case 'Doctor': 
          vals = data.Doctor.split(","); 
          break; 
         case 'Engineer': 
          vals = data.Engineer.split(","); 
          break; 
         case 'Lawyer': 
          vals = data.Lawyer.split(","); 
          break; 
         case 'base': 
          vals = ['Please choose from above']; 
        } 

        var $jsontwo = $("#json-two"); 
        $jsontwo.empty(); 
        $.each(vals, function(index, value) { 
         $jsontwo.append("<option>" + value + "</option>"); 
        //}); 

       }); 
      }); 
    </script> 
+0

올바르게 채워 졌습니까? DId 콘솔 로그? –

+0

어디서 모든 것이 잘못되었는지 알았습니까? 변경 기능이 트리거됩니까? 선택 후에 올바른 드롭 다운이 있습니까? json이 서버에서 복귀합니까? json에 올바른 데이터가 포함되어 있습니까? 전환 후 val에 올바른 데이터가 포함되어 있습니까? 루프가 트리거를 추가합니까? – Shilly

+0

예. 유효한 json 데이터를 제공하는지 확인했습니다 ..! –

답변

0

당신 코드는 잘 작동합니다하지만 당신은이 일에 대해 걱정해야합니다.

1 : data.json 파일이 있어야합니다.

2 : 당신은 당신이 아래의 plunker에서 작업을 볼 수 있습니다

{ 
    "beverages": "coke,pepsi", 
    "snacks":"chips,biscuit" 
} 

가져 오기 JSON의 성공 콜백에서 소비 될 때 data.json에서 JSON 객체가 동일한 구조를 가져야한다.

Plunker : 나는 this 바이올린에 당신과 같은 코드를 검사 한 http://plnkr.co/edit/2dI09RIDuFGc9XMKXU1h?p=preview

+0

톤 감사합니다 ..! –

0

.

유일한 차이점은 json을 비동기 적으로로드하지 않는다는 것입니다. 따라서 json 파트의 로딩 여부 또는 파일이 해당 위치에 있는지 여부를 확인해야합니다.

<div class="form-group"> 
    <select id="json-one" class="form-control"> 
     <option selected="" value="base">Please Select</option> 
     <option value="beverages">Beverages</option> 
     <option value="snacks">Snacks</option> 
    </select> 
</div> 

<div class="form-group"> 
    <select id="json-two" class="form-control"> 
     <option>Please choose from above</option> 
    </select> 
</div> 

var data = { 
"beverages":"tea,coffee", 
"snacks":"namkeen,biscuits" 
}; 
$("#json-one").change(function() { 

       var $dropdown = $(this); 

       //$.getJSON("data.json", function(data) { 

        var key = $dropdown.val(); 
        var vals = []; 

        switch(key) { 
         case 'beverages': 
          vals = data.beverages.split(","); 
          break; 
         case 'snacks': 
          vals = data.snacks.split(","); 
          break; 
         case 'base': 
          vals = ['Please choose from above']; 
        } 

        var $jsontwo = $("#json-two"); 
        $jsontwo.empty(); 
        $.each(vals, function(index, value) { 
         $jsontwo.append("<option>" + value + "</option>"); 
        //}); 

       }); 
      }); 

다른 것이 필요한 경우 알려주십시오.

+0

유용한 답변을 주셔서 감사합니다. ..i 같은 기지에 내 코드 일자가되어 있지만 슬프게도 내가 그랬듯이 .. !! –

+0

마음을 놓치면 도와주세요 ..! –

+1

@ 닌자 : getJSON 함수의 success 콜백에서 데이터에 액세스 할 때 비동기 호출은 중요하지 않으며 JSON 데이터가 수신 된 후에 만 ​​실행됩니다. – Deep

관련 문제