2016-11-25 6 views
1

나는 형식배열 내부 JSON 키 값을 넣고 JQuery와

{ 
"tname": [ 
    { 
     "project_id" : "SC.0440", 
     "project_name" : "AAA - Testing", 
     "review_frequency" : "Monthly", 
     "planned_ipr_date" : "2016-02-16T18:30:00Z", 
     "actual_ipr_date" : "2016-02-16T18:30:00Z", 
     "contract" : "G", 
     "finance" : "G", 
     "delivery" : "G", 
     "people" : "G", 
     "process" : "G", 
     "project_rag" : "G", 
     "isms_compliance" : "G", 
     "bcms_compliance" : "G", 
     "description" : "" 
    } 
]} 

아래에서 여러 JSON 파일을 수신 할 응용 프로그램을 만들려고하고있다 그리고 나는 선택이 복용하고를 사용하여 $ .each 루프를 통해 표시 내가 하나의 "tname"을 표시하고 "tname"을 선택하면 다른 선택 상자에 관련된 모든 키가 표시됩니다. i는 첫 번째 선택 상자의 키 값을 가져 오는 부분과 변경시 다른 선택 필드에 키 값을 표시하려고합니다. 내가 여기서 filePath는() 나는 모든 반환 표시 할

function getColumn(keyval){ 
     var arr = filePath(); 
    var colnames = []; 
     $.each(arr, function (index, value){ 
      $.getJSON(value,function(result){ 
       $.each(result,function(key,field){ 
        if(key == keyval){ 
         $.each(field,function(key,field){ 
          $.each(field,function(key,field){ 
           colnames.push(key); 
          }); 
          return false; 
         }); 
        }else{ 
         return false; 
        } 
       }); 
      }); 
     }); 
     return colnames; 
    } 

이제 JSON 파일의 경로를 반환하는 함수이고 첫 번째 선택에 따라 모든 키 값을 얻을 수있는 기능을 작성했습니다

다른 선택 box.how 안에 키 값이 jquery를 사용하여 이것을 얻을 것인가?

+0

한 번에 모든 값을 전달하는 대신 각각의 단일 반환 많은 JSON 파일을 전달하는 한 (큰) JSON 파일을 얻을 수있는 이유가 여기있다 :

샘플입니까? – Lain

+0

@Lain이 병합 작업을 염두에두고 있지만 지금은 하나의 json 파일에 대해 언급 된 문제를 해결하기 위해 노력하고 있습니다. –

답변

1

두 번째 <select>을 첫 번째 <select>에 명명 된 개체의 키로 채우는 방법을 보여주는 코드 샘플입니다. tname.

가정은 당신이 테스트를 기반으로 2 <select>에 대해 서로 다른 객체 키를 참조 할 수있는 data 목적에 합치 될 것입니다 : 1의 값을 선택 기본적으로 의미

if(data.hasOwnProperty(selectKey)) { 

'된다 데이터 객체의 키 '를 선택합니다.

var data = { 
 
\t "tname": [{ 
 
\t \t "project_id": "SC.0440", 
 
\t \t "project_name": "AAA - Testing", 
 
\t \t "review_frequency": "Monthly", 
 
\t \t "planned_ipr_date": "2016-02-16T18:30:00Z", 
 
\t \t "actual_ipr_date": "2016-02-16T18:30:00Z", 
 
\t \t "contract": "G", 
 
\t \t "finance": "G", 
 
\t \t "delivery": "G", 
 
\t \t "people": "G", 
 
\t \t "process": "G", 
 
\t \t "project_rag": "G", 
 
\t \t "isms_compliance": "G", 
 
\t \t "bcms_compliance": "G", 
 
\t \t "description": "" 
 
\t }] 
 
}; 
 

 
$("#items1").on("change", function() { 
 
    var selectKey = $(this).val(); 
 
    $("#items2").empty(); 
 
    if(data.hasOwnProperty(selectKey)) { 
 
    $.each(data[selectKey][0], function(k, v) { 
 
     $("#items2").append("<option value='" + k + "'>" + k + "</option>"); 
 
    }); 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<div id="select1"> 
 
    <select id="items1"> 
 
    <option value="foo">foo</option> 
 
    <option value="tname">tname</option> 
 
    <option value="bar">bar</option> 
 
    </select> 
 
</div> 
 
<div id="select2"> 
 
    <select id="items2"> 
 
    </select> 
 
</div>