无法访问javascript json属性?

iCa*_*arp 1 javascript json

我有一个json对象,有4个MAKE,4个MODEL,4年,4个状态,4个PLATE,4个COLOR属性:

Object {MAKE1="xxx ", MODEL1='xxx', YEAR1='xxx', STATE1='xxx', PLATE1='xxx', COLOR1='xxx', MAKE2='xxx', MODEL2='xxx' ,..., MAKE3='xx',..., MAKE4='xxx',...,COLOR4='xxx'}
Run Code Online (Sandbox Code Playgroud)

我的javascript:

 function displayPP() {
            $.getJSON('/ipad/api/formpp/' + personId + '/getmemberlatestpp', function(data) {

                for (var index=1; index<5; index++) {
                    $('#ppBody').append('<tr>');
                    var MAKE = 'MAKE' + index, MODEL = 'MODEL' + index, YEAR = 'YEAR' + index, STATE = 'STATE' + index, PLATE = 'PLATE' + index, COLOR= 'COLOR' + index;
                    var HTML = '<td>' + data.MAKE + '</td><td>' + data.MODEL + '</td><td>' + data.YEAR + '</td><td>' + data.STATE + '</td><td>' + data.PLATE + '</td><td>' + data.COLOR + '</td>';
                    $('#ppBody').append(HTML);
                    $('#ppBody').append('</tr>');      
                }                   
            });
    }
Run Code Online (Sandbox Code Playgroud)

所有json属性都返回为undefined.这是为什么?如果我做data.MAKE1,data.MAKE2 ......它工作正常.

Que*_*tin 7

var foo = "X"; data.foo将涉及foo财产,而不是X财产.

如果要使用变量来表示属性名称,则必须使用方括号表示法(它采用字符串而不是标识符).

data[foo]
Run Code Online (Sandbox Code Playgroud)

也就是说,除了数字计数器之外,永远不会有共享名称的东西.使用适当的数据结构:

[ 
    { 
        "make": "xxx", 
        "model": "xxx", 
        "year": "xxx", 
        "state": "xxx", 
        "plate": "xxx",
        "color": "xxx"
    },
    { 
        "make": "xxx", 
        "model": "xxx", 
        "year": "xxx", 
        "state": "xxx", 
        "plate": "xxx",
        "color": "xxx"
    }
]
Run Code Online (Sandbox Code Playgroud)

  • 不知道是谁贬低了.这是对的.`data [MAKE]`是OP正在寻找的东西.(或者至少是data.MAKE1,以先到者为准) (3认同)