在jQuery中创建JSON对象的数组

时间:2017-02-01 11:18:22

标签: javascript php jquery arrays json

我有一个PHP API文件,用JSON编码数组,然后在我的jQuery文件中检索JSON数据以动态创建元素。

我需要根据收到的JSON创建一个数组,这样我就可以随时访问收到的数据,而不是进行新的API调用,然后通过结果迭代....

如何创建一个jQuery数组来访问jQuery代码中的任何数据?

我的PHP数组:     if(mysqli_num_rows($ run_query)> 0){

$ids = array();
$namen = array();
$brouwerijen = array();
$types = array();
$gistingen = array();
$percs = array();
$inkoop_prijzen = array();
$biertjes = array();

while($row = mysqli_fetch_assoc($run_query)) {
    $id = $row['id'];
    $naam = $row['naam'];
    $brouwerij = $row['bouwerij'];
    $type = $row['type'];
    $gisting = $row['gisting'];
    $perc = $row['perc'];
    $inkoop_prijs = $row['inkoop_prijs'];

    $ids[] = $id;
    $namen[] = $naam;
    $brouwerijen[] = $brouwerij;
    $types[] = $type;
    $gistingen[] = $gisting;
    $percs[] = $perc;
    $inkoop_prijzen[] = $inkoop_prijs;

}   

for($i=0; $i < count($ids); $i++){

    $biertjes[] = array("id"=>$ids[$i], "naam"=>$namen[$i], "brouwerij"=>$brouwerijen[$i], "type"=>$types[$i], "gisting"=>$gistingen[$i], "perc"=>$percs[$i], "inkoop_prijs"=>$inkoop_prijzen[$i]);

}

echo json_encode($biertjes);


}       

我在jQuery中尝试做但是没有用(biertjes.push行):

var biertjes = [];
$.ajax({
    url :   "action-api.php",
    method: "GET",
    dataType: 'json',
    success :   function(data){ 
        console.log(data);

        var html = '<table style="width:100%"> <tr> <th>Edit</th> <th>Info</th> <th>Delete</th> <th>Naam</th> <th>Percentage</th> </tr>';

        $.each(data, function(i, item) {
            html+='<tr><td><div class="edit"><img src="img/edit.png"/></div></td>';
            html+='<td><div class="info"><img src="img/info.png"/></div></td>';
            html+='<td><div class="delete"><img src="img/delete.png"/></div></td>';
            html+='<td>'+item.naam+'</td>';
            html+='<td>'+item.perc+'</td></tr>';
            biertjes.push(["id", item.id]);
        });

        html+='</table>'
        container.append(html).css(tableCss());
    },  
});     

1 个答案:

答案 0 :(得分:1)

很难确定,因为你还没有发布JSON的样本,但是......

从你的ajax调用我们可以看到你期望一个JSON响应,因此数据将成为一个普通的JS对象。如果您的JSON是这样的:

Persistent-Auth: true

然后数据变量将是JS数组。因此你可以做到

[{
    "id": 111,
    "naam": "AAAA",
    "perc": 111.11
}, {
    "id": 222,
    "naam": "BBBB",
    "perc": 222.22
}, {
    "id": 333,
    "naam": "CCCC",
    "perc": 333.33
}]

结论 - 无需创建单独的数组,只需使用数据。如果你需要访问ajax成功函数之外的数组,那么:

console.log(data[0].id) // 111
console.log(data[1].naam) // 'BBBB'

for (var i=0; i < data.length(); i = i + 1){
    console.log('Element ' + i + ' = ' + JSON.stringify(data[i]))
}