2017-01-24 104 views
-1

我使用jq將json鍵值對數組提取到一個數組中,但我不知道如何使用它來填充html選擇列表框。

如果我經歷過向jq輸出添加內容的喧鬧聲,我可以閱讀它,但也許答案是讓jq輸出成爲準確的json,它是非匿名數組。我只是不知道如何做到這一點。

JQ的輸出是這樣的:

[ 
    { 
    "id": 82247683, 
    "name": "project1" 
    }, 
    { 
    "id": 7700483, 
    "name": "project2" 
    } 
] 

什麼用jQuery $。每次的工作原理是,如果格式是不是這樣的:

{"project": [ 
    { 
    "id": 82247683, 
    "name": "project1" 
    }, 
    { 
    "id": 7700483, 
    "name": "project2" 
    } 
]} 

在此刻,我硬是在第一行套結最後一行是讓這些數據再次成爲json數據並讓它與getJSON一起工作。

的$。每次循環我使用:

<script type="text/javascript"> 
    var $select = $('#project'); 
    $.getJSON('projects.json', function(data) { 
     $select.html(''); 
     $.each(data.project, function(key,val) { 
      $select.append('<option id="'+val.id+'">'+val.name+'</options>'); 
     }) 
    }); 
</script> 

由於使用的getJSON加用$。每個(data.project)我需要釘在數組名加上其他元素。

我希望從你的信息,無論是使用jq獲得正確的json或任何修改,我需要做的getJSON + $ .each讓它與現在出來的jq輸出一起工作。此外,在這種情況下getJSON是否需要該數組是非匿名的?

最終結果應該是填充的列表框。

+0

$。每個不關心你使用這些兩種格式,只要你給它你想要它遍歷。 –

回答

0

var data = [ 
 
    { 
 
    "id": 82247683, 
 
    "name": "project1" 
 
    }, 
 
    { 
 
    "id": 7700483, 
 
    "name": "project2" 
 
    } 
 
]; 
 

 
var data2 = { 
 
    "project": [ 
 
    { 
 
     "id": 82247683, 
 
     "name": "project1" 
 
    }, 
 
    { 
 
     "id": 7700483, 
 
     "name": "project2" 
 
    } 
 
    ] 
 
}; 
 

 
console.log('data'); 
 
$.each(data, function(key, val) { 
 
    console.log('<option id="'+val.id+'">'+val.name+'</options>'); 
 
}); 
 

 
console.log('data2'); 
 
$.each(data2.project, function(key, val) { 
 
    console.log('<option id="'+val.id+'">'+val.name+'</options>'); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

無論哪種格式會工作。請注意,對於data,您不使用data.project

因此,對於你的例子:

$.getJSON('projects.json', function(data) { 
    $select.html(''); 
    $.each(data, function(key, val) { 
    $select.append('<option id="'+val.id+'">'+val.name+'</options>'); 
    }) 
}); 
+0

我不知道如何將其轉換爲我的代碼。我正在使用$ .getJSON,而您有兩個未由$ .getJSON定義的變量集。我試過類似var data = $ .getJSON('projects.json');這雖然不起作用。您的代碼確實顯示了$ .each可以用於匿名數組和命名數組。 – archcutbank

+0

我試着做一些類似var數據的事情; $ .getJSON('projects.json',function(json){data = json;}然後使用該數據變量,但我認爲這個問題是,除非我貼上{「project」:[和]]最後數據不會被視爲合法的json – archcutbank

+0

你只需要將'data.project'改成'data',我只是明確地將它添加到我的答案中。 –