我有以下 json 对象:
$dati = array(
"data" => array(
'address_complete'=>$data->results[0]->formatted_address,
'address_square'=>$data->results[0]->address_components[1]->long_name,
'location'=>$data->results[0]->address_components[2]->long_name,
'postal_code'=>$data->results[0]->address_components[7]->long_name,
'data_ora'=>$tmp_date
),
"str" => array("n".$i=>$array_db[username]),
"index" => $i
);
我想显示str数据。所以我写道:
... success:function(msg){
if(msg){
var j = "n"+2;
$("#location").html(msg.str.j);
}else{
$("#location").html('Not Available');
}
},
但输出为空。相反,如果我不在 $("#location").html(msg.str.j); 中使用变量 j 但 $("#location ").html(msg.str.n2);
它工作正常。为什么会这样?
最佳答案
这是因为您正在尝试将字符串附加到对象。
您正在尝试执行类似于 msg.str.'n2' 的操作,它与 msg.str.n2 不同。
我现在就给你一个工作示例:
var object = {
name: 'Aleksandar',
lastname: 'Djokic'
};
alert(object.name);
结果是“Aleksandar”
现在这个:
var object = {
name: 'Aleksandar',
lastname: 'Djokic'
};
var something = 'name';
alert(object.something);
此警报的结果是“未定义”。
更新:对象中的数组:
var object = {
name: 'aleksandar',
lastname: 'djokic',
arr: ['first','second','third']
};
for(var i = 0; i<object.arr.length; i++) {
alert(object.arr[i]);
}
如果您想通过 key 获取它,请使用:
var something = 'n2';
alert(msg.str[something]);
正确的解决方案:
... success:function(msg){
if(msg){
var j = "n"+2;
$("#location").html(msg.str[j]);
}else{
$("#location").html('Not Available');
}
},
关于javascript - 返回 json 对象中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38534773/