我正在使用GET ajax请求从数据库中检索一些JSON数据。我想循环它并打印某些项目。例如,我只想打印stylist_1
中的所有地址。问题是它只打印最后一项。
这是代码的样子:
var stylist1Addresses;
function getData() {
$.ajax({
url: '/getData',
type: 'GET',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (data) {
for (var i = 0; i < data.stylist_1.length; i++) {
stylist1Addresses = data.stylist_1[i];
}
}
});
console.log(stylist1Addresses);
}
示例数据:
{
"stylist_1": [
{
"Address": "1 Stn Main",
"Phone": "403-990-9033"
},
{
"Address": "474 Cirrus Rd",
"Phone": "403-995-3243"
},
{
"Address": "1591 Stn St",
"Phone": "403-982-8893"
}
],
"stylist_2": [
{
"Address": "219 Welch Blvd",
"Phone": "587-436-3171"
},
{
"Address": "374 Main Rd",
"Phone": "587-315-9431"
},
{
"Address": "564 Main Rd",
"Phone": "403-938-9983"
}
]
}
答案 0 :(得分:3)
以下是两种可能的解决方案。
第一个解决方案:
var stylist1Addresses;
function getData() {
$.ajax({
url: '/getData',
type: 'GET',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (data) {
for (var i = 0; i < data.stylist_1.length; i++) {
stylist1Addresses = data.stylist_1[i];
console.log(stylist1Addresses);
}
}
});
}
这将生成三个控制台日志,每个地址之一。
第二个解决方案:
var stylist1Addresses = [];
function getData() {
$.ajax({
url: '/getData',
type: 'GET',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (data) {
for (var i = 0; i < data.stylist_1.length; i++) {
stylist1Addresses.push(data.stylist_1[i]);
}
console.log(stylist1Addresses);
}
});
}
这将生成一个控制台日志,即所有三个地址的数组。
你在找哪个?
答案 1 :(得分:1)
您正在使用每个循环更新'stylist1Addresses'变量。
尝试将'stylist1Addresses'变量初始化为如下数组:
var stylist1Addresses = [];
并替换此行:
stylist1Addresses = data.stylist_1[i];
用这个:
stylist1Addresses.push(data.stylist_1[i]);
'push'会将每个循环上的项添加到'stylist1Addresses'数组中。
注意:如果您只想获取地址,则应使用此行代替
stylist1Addresses.push(data.stylist_1[i].Address);
答案 2 :(得分:0)
这就是我将仅在stylist_1中打印地址的方式
<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
var $string = '{THE JSON Here}';
$json = $.parseJSON($string);
for ( var i in $json ) {
if ( i === 'stylist_1') {
var list = $json[i];
console.log(list[0].Address);
return;
}
}
</script>