Javascript 从JSON数组生成多维数组时出错
我使用JavaScript通过PHP从服务器获取数据 PHP从MySQL获取数据,将其编码为JSON数据,并通过HTTP协议将其发送到客户端——在我的例子中,就是浏览器 JavaScript(如下图所示)提取这些值并呈现图表。仅用于测试,我将打印JSONArray到StringArray的转换,这是PHP的输出 当我的JS代码达到以下要点时,有什么建议吗Javascript 从JSON数组生成多维数组时出错,javascript,Javascript,我使用JavaScript通过PHP从服务器获取数据 PHP从MySQL获取数据,将其编码为JSON数据,并通过HTTP协议将其发送到客户端——在我的例子中,就是浏览器 JavaScript(如下图所示)提取这些值并呈现图表。仅用于测试,我将打印JSONArray到StringArray的转换,这是PHP的输出 当我的JS代码达到以下要点时,有什么建议吗 myLogger("myLogger - newObject.dummmysetsJSONArr.entryID" + newObject.d
myLogger("myLogger - newObject.dummmysetsJSONArr.entryID" + newObject.dummmysetsJSONArr.entryID);
它抛出以下错误,如控制台中所示:
uncaught typeerror cannot read property 'entryID' of undefined
下面是一个将DB数据转换为JSON的示例:
{"dummmysetsJSONArr":[{"entryID":"1","distance":"100","calories":"50"},{"entryID":"2","distance":"200","calories":"100"},{"entryID":"3","distance":"300","calories":"150"},{"entryID":"4","distance":"400","calories":"200"},{"entryID":"5","distance":"500","calories":"250"},{"entryID":"6","distance":"600","calories":"300"}],"success":1}
这是我的JS:
google.setOnLoadCallback(drawVisualization);
function drawVisualization() {
var req = false;
var jsonarry;
try {
// most browsers
req = new XMLHttpRequest();
myLogger("myLogger - XMLHttpRequest() created");
} catch (e){
// IE
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
myLogger("myLogger - req = new ActiveXObject(Msxml2.XMLHTTP);");
} catch (e) {
// try an older version
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
myLogger("myLogger - req = new ActiveXObject(Microsoft.XMLHTTP);");
} catch (e){
}
}
}
if (!req) {
myLogger("req === false");
} else {
myLogger("req === true");
}
// Use onreadystatechange property
req.onreadystatechange = function() {
//myLogger("myLogger - req.onreadystatechange = function(){");
if(req.readyState == 4) {
myLogger("myLogger - req.readyState == 4");
if(req.status === 200) {
myLogger("myLogger - req.status === 200");
jsonarry = req.responseText;
myLogger("myLogger - JSON ARRAY - " + jsonarry);
myLogger(" ------------- ");
var identedText = JSON.stringify(jsonarry, null, 4);
var jsonString = JSON.stringify(jsonarry);
myLogger("myLogger - Unindented jsonString - " + jsonString);
var newObject = JSON.parse(jsonString);
myLogger("myLogger - newObject " + newObject);
myLogger("myLogger - newObject.dummmysetsJSONArr.entryID" + newObject.dummmysetsJSONArr.entryID);
}
function myLogger(content) {
if (window.console && window.console.log) {
console.log("myLogger - " + content);
}
}
编辑:通过删除不相关的位,我已将操作代码缩减为
欢迎提出任何意见错误在这一行
myLogger("myLogger - newObject.dummmysetsJSONArr.entryID" + newObject.dummmysetsJSONArr.entryID);
当您尝试记录newObject.dummysetsjsonarr.entryID
时
实际上,newObject.dummysetsjsonarr.entryID
是未定义的,因为newObject.dummysetsjsonarr
是一个数组
例如,
newObject.dummysetsjsonarr[0]。entryID
将是有效的。如果在发布之前将代码缩减到相关部分,这将有助于阅读和回答。。既然dummysetsjsonarr
是一个数组,它不应该是newObject.dummysetsjsonarr[0]。entryID
应该是。。谢谢我是JS新手,但无论如何,我应该意识到我需要访问数组元素。