-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 を使用して一部の 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 に答える