1

我从 servlet 获取 JSON,并使用 JSON.parse() 将 responseText 转换为 JSON 对象。Chrome 开发人员工具将 JSON 对象显示为具有我想要的数据,但是当我实际尝试访问它时,我只会得到一堆“未定义”。

我没有正确解释数据吗?

Chrome 开发者工具截图: JSON 对象的调试输出

简而言之,我输出数据的代码:

        for (var i = 0, len = jsonObj.length; i < len; ++i) {
            // Setup the result...
            var resultRow = document.createElement("tr");
            resultsTable.appendChild(resultRow);            
            var result = jsonObj[i];

            // Name
            var coverCell = resultRow.insertCell(0);
            coverCell.innerHTML = result.name;
        }

屏幕截图中看到的 jsonData 作为 jsonObj 传递到输出函数中。

4

2 回答 2

1

您尝试访问的密钥似乎@在前面有字符。由于该@字符不是有效标识符,因此您不能使用点表示法,您可以使用括号表示法检索该值:

coverCell.innerHTML = result['@name'];
于 2013-04-09T14:28:39.503 回答
0

如果您从服务器获取 json,那么为什么要使用 json.parse()?您应该直接将数据用作 json。

JSON.parse() 用于将字符串解析为 JSON。我知道来自服务器的响应已经是一个 JSON,可以直接使用而无需进一步解析。

作为一种故障排除方式,您可以使用 console.log 打印对象。

于 2013-04-08T22:04:29.083 回答