从JSON数组中读取

时间:2012-08-27 03:14:51

标签: javascript jquery json

这是我的JSON数组:

msg={"userid":"82","0":"82","first":"A","1":"A","last":"B","2":"B","email":"w@w.com","3":"w@w.com","username":"n","4":"n","password":"o","5":"o","hash":"3242","6":"3242","active":"0","7":"0","date":"0","8":"0","holding":"","9":"","ip":"0","10":"0","attempts":"0","11":"0"}

现在我正在尝试获取不同的部分,但我尝试的任何工作都没有。我试过了

msg.first //returns undefined
msg['first'] // returns undefined
msg[0] // returns that first bracket {

我相信这很容易解决,我只是不知道问题是什么。这个数组由一些php使用json_encode()输出。如果该代码是相关的,请告诉我,我会提出来。谢谢。

3 个答案:

答案 0 :(得分:3)

如果msg[0]返回第一个括号,则JSON以某种方式被解释为字符串。这可以通过jQuery的parseJSON()

轻松修复
msg = $.parseJSON(msg);

答案 1 :(得分:0)

我试过这样。

<html>
<head>
    <script src="http://code.jquery.com/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">

    function display(data) {
    $.each(data, function(key,value) {
        $('#userDetails').append('<li>' + key +  " : " +'<span class="ui-li-aside">'+ value +'</span></li>');
    });
}
        $(document).ready(function() {
            msg= {"userid":"82",
                   "0":"82",
                   "first":"A",
                   "1":"A",
                   "last":"B",
                   "2":"B",
                   "email":"w@w.com",
                   "3":"w@w.com",
                   "username":"n",
                   "4":"n",
                   "password":"o",
                   "5":"o",
                   "hash":"3242",
                   "6":"3242",
                   "active":"0",
                   "7":"0",
                   "date":"0",
                   "8":"0",
                   "holding":"",
                   "9":"",
                   "ip":"0",
                   "10":"0",
                   "attempts":"0",
                   "11":"0"}

        display(msg);
        });
    </script>
</head>
<body>
<div id="userDetails"></div>
</body>
</html>

答案 2 :(得分:0)

在使用jQuery ajax函数时,我遇到了这个问题。您需要指定您期望得到json响应。

如果您进行此调用,则返回的data变量将为字符串。

$.ajax({
    type: "POST",
    url: '/controller/function',
    data: {
        'parameter_name' : value,
    },
    success: function(data){
        console.log(data.blah); // Undefined
    },
});

但是如果你将dataType指定为“json”,那么数据变量将是一个json对象。

$.ajax({
    dataType: "json", // Have to include this
    type: "POST",
    url: '/controller/function',
    data: {
        'parameter_name' : value,
    },
    success: function(data){
        console.log(data.blah); // Defined!!!
    },
});