Javascript 无法分析JSON数组
我有这个json,并试图用Ajax解析它Javascript 无法分析JSON数组,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我有这个json,并试图用Ajax解析它 { "data1": ["1 06, 2016 23:27:11", "22.4", "26.3", "866.81"], "data2": [ ["1 06, 2016 21:55:39", "1 06, 2016 22:05:49", "1 06, 2016 22:15:59", "1 06, 2016 22:26:10", "1 06, 2016 22:36:19", "1 06, 2016 22:46:30", "
{
"data1": ["1 06, 2016 23:27:11", "22.4", "26.3", "866.81"],
"data2": [
["1 06, 2016 21:55:39", "1 06, 2016 22:05:49", "1 06, 2016 22:15:59", "1 06, 2016 22:26:10", "1 06, 2016 22:36:19", "1 06, 2016 22:46:30", "1 06, 2016 22:56:41", "1 06, 2016 23:06:51", "1 06, 2016 23:17:01", "1 06, 2016 23:27:11"],
["22.1", "22.2", "22.5", "22.6", "22.7", "21.5", "22.6", "22.6", "22.5", "22.4"],
["25.7", "26.8", "27.1", "27.2", "27.2", "26.3", "26.9", "26.7", "26.4", "26.3"],
["866.9", "866.64", "866.81", "866.61", "866.53", "866.65", "866.51", "866.65", "866.67", "866.81"]
],
"data3": [
["1 03, 2016", "1 04, 2016", "1 05, 2016", "1 06, 2016"],
["21.8", "21.1", "20.5", "20.3"],
["23.8", "24.1", "24.2", "23.4"]
],
"data4": [
["1 03, 2016", "1 04, 2016", "1 05, 2016", "1 06, 2016"],
["32.7", "28", "22.9", "23.5"],
["35.7", "32.8", "29.5", "28.5"]
],
"data5": [
["1 03, 2016", "1 04, 2016", "1 05, 2016", "1 06, 2016"],
["869.31", "870.46", "867.2", "864.37"],
["872.57", "875.91", "875.54", "869.3"]
]
}
解析之后,控制台显示这一点,就像从php文件打印出来一样。但是,当我试图在控制台中打印指定值时,它找不到值,并导致以下错误:
Uncaught TypeError: Cannot read property '0' of undefined
例如,在打印data1对象内部数组的第一个值(“1062016 23:27:11”)时,使用:
试一试
console.log(jsonData.data1)上显示了什么?它返回:undefinedYou正在使用
.responceText
和数据类型:“json”
它们是否兼容?毕竟jquery应该将其转换为json对象。或者在这种情况下可能不是这样,因此如果您将字符串捕获为文本,则可能必须手动将其转换为json对象。我认为您正在打印响应,而ajax请求尚未解决。最后一行应该是console.log(json.parse(jsonData).data1[0])代码>,因为此时jsonData仍然是一个字符串…这将正确返回所需的值。如果要使用ajax请求,我建议:但如果要创建一个返回json的ajax请求,我建议:
var jsonData = $.ajax({
url: "source.php",
dataType:"json",
async: false
}).responseText;
console.log(jsonData);
console.log(jsonData.data1[0]);
$.getJSON( "source.php", function( json ) {
console.log(json.data1[0]);
});