我有一个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());
},
});
答案 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]))
}