2016-11-25 2 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ファイルを受信するアプリケーションを作成しようとしていると私は、セレクト2を取っていますを使用して$ .eachループを通してそれを表示します私は "tname"を1つに表示し、 "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ファイルのパスを返す関数である第一の選択に基づいて、すべてのキーの値を取得するための機能を書かれている

私はjqueryを使用してこれを達成する別の選択box.how内のキー値?

+0

一度にすべての値を渡して、代わりに多くのJSONファイルを返す各単一を渡すの1(ビッグ)JSONファイルを取得しないように何らかの理由はありますか? – Lain

+0

@Lain私はこのマージ操作を念頭に置いていますが、今は1つのjsonファイルについて上記の問題を解決しようとしています。 –

答えて

1

<select>という名前のオブジェクトのキーを2番目の<select>に埋め込む方法を示すコードサンプルです。 tname

仮定は、あなたがテストに基づいて第二<select>に異なるオブジェクトキーを参照できますdataオブジェクトに連結されることである。第一の値が選択基本的に意味

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>

関連する問題