-1

这是我的 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(). 如果该代码是相关的,请告诉我,我会提出来。谢谢。

4

3 回答 3

3

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

msg = $.parseJSON(msg);
于 2012-08-27T03:21:19.990 回答
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>
于 2012-08-27T03:23:53.070 回答
0

我在使用 jQueryajax函数时遇到了很多这个问题。您需要指定您期待 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!!!
    },
});
于 2012-08-27T03:37:23.250 回答