以下是我的 json
响应:
{"fname":"abc","lname":"xyz","email":"test@user.com","description":[{"city":"abcxyz","address":"AX","country":"US","date":"2020-02-01"},{"city":"abcxyz","address":"AX","country":"US","date":"2020-02 01"}], "city":"abcxyz","address":"DS","country":"US","Month":"12","Year":"2012"}
以下是我的代码:
success: function(data)
{
var userinfo=eval(data);
alert(userinfo['fname1']; //display correct result
alert(userinfo['description']['city']; //display undefined
if(!$("#fname1").val()) $("#fname1").val(userinfo['fname']);
if(!$("#lname1").val()) $("#lname1").val(userinfo['lname']);
}
在成功函数中,如果我尝试提醒 alert(userinfo['fname1']
,那么它会向我显示正确的结果,即显示名称,但如果我尝试提醒 alert(userinfo ['description']['city']
然后它在警报中向我显示未定义
。
然后我尝试使用 each
循环,但仍然不起作用
$.each(userinfo['description'], function() {
alert(userinfo'description']['city']; //not working
$("#city option[value="+userinfo['description']['city']+"]").attr("selected", "selected");
});
以下是我的 html :
<select name="country" id="country">
<?php
foreach ($this->description as $country) {
?>
<option value="<?php echo $country['country']; ?>" <?php echo ($this->params['country'] == $country['country']) ? "selected='selected'" : ""; ?>><?php echo $country['country']; ?></option>
<?php }
?>
</select>
谁能告诉我我哪里出错了。谢谢。
最佳答案
你需要做:
alert(userinfo['description'][0]['city'];
userinfo['description']
是一个数组。您需要首先按索引引用元素。一旦引用了该对象,就引用该属性
我认为没有任何需要eval
。评估是一种不好的做法。你可以这样写:
var userinfo = data;
如果服务器发送了正确的 header (application/json
) 或者您为 dataType
参数传递了 json
,JQuery 就会解析响应。即使 dataType
的默认值也是智能猜测
。
关于javascript - jquery中如何打印json数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14000191/