Javascript 为什么Chart.js forEach没有定义

Javascript 为什么Chart.js forEach没有定义,javascript,json,ajax,chart.js,Javascript,Json,Ajax,Chart.js,我正在使用chart.js制作图表,但出现以下错误: 未捕获的TypeError:无法读取未定义的属性“forEach” 反对 错误产生的代码行如下所示 var jsonData = $.ajax({ url: 'link', dataType: 'json', }).done(function (results) { // Split timestamp and data into separate arrays var labels = [], data=

我正在使用chart.js制作图表,但出现以下错误:

未捕获的TypeError:无法读取未定义的属性“forEach” 反对

错误产生的代码行如下所示

var jsonData = $.ajax({
    url: 'link',
    dataType: 'json',
  }).done(function (results) {
    // Split timestamp and data into separate arrays
    var labels = [], data=[];
    results["packets"].forEach(function(packet) {
    labels.push(new Date(packet.timestamp).formatMMDDYYYY());
    data.push(parseFloat(packet.payloadString));
});

我看不出这有什么问题。您误读了错误消息

它并不是说
forEach
未定义,而是说您正试图从另一个
未定义的对象中读取名为
forEach
的属性

在这种情况下,
结果[“packets”]


它是未定义的,因为您从
链接返回的JSON没有您认为的结构。您需要查看
results
(例如,使用
console.log(results)
并查看它实际具有什么结构。

Hi,您可以添加
results
的示例值吗?提供一个类似
results&&results[“packets”]的空保护。对于每个..
这正是错误所说的-
results[“packets”]
未定义的
。您应该检查AJAX调用返回的内容。如果没有看到数据,我们无法确定,但JSON似乎没有返回您期望的内容。
console.log(JSON.stringify(results));
(或者只是在浏览器的网络工具中检查AJAX调用的响应)将允许您查看实际接收到的数据。这是一个相当简单的问题,很容易调试…您只需要学习如何使用现有的工具,然后您就会发现可以更轻松地修复它。@K.Jackson-我在对象中看不到
packets
属性,这就是为什么
forEach
of未定义的错误即将出现。这是console.log提供的。0:data:NOK:{count:0,percentage:0}确定:{count:“8”,percentage:“100”}proto:Object timestamp:“1541404800”原型:Object@K.Jackson-那里没有任何所谓的
数据包的迹象。是的,这是我从其他人那里得到的小代码,但是如果你看json,我需要做什么,但是数据包在那里。这是我第一次这样做this@K.Jackson而是使用要访问的字段的名称:-)。似乎您有一个对象,其属性名为“data”,它本身就是一个对象,然后在其中有两个属性“NOK”和“OK”,等等。您没有提到希望使用哪一位数据。@ADyson我需要使用“NOK”和“OK”的数据。你能给我举个例子说明你的意思吗