在ChartJS中发布数据时的JSON循环对象值

时间:2018-05-23 19:30:00

标签: javascript json chart.js

我正在使用ChartJS创建包含用户输入的图表。它可以很好地显示多个数据集的结果,但是当我使用JSON使用JSON发布数据时,我得到此错误“循环对象值”。我一直无法在这里找到答案,所以我会尽力解释这个问题。

这是我发布的JS对象(myChart.data.datasets),有两个ChartJS数据集:

然后我有一个save()函数,在图表完成后发布该信息(仅适用于一个数据集)。

function save() {
    let data = {
          datasets: myChart.data.datasets
     };
     $.post('/save',
         {
             savedData: JSON.stringify(data),
             color: document.getElementById("color").value,
             ...
         }    
      )
}

我不知道这里的循环对象是什么,但我知道问题在于发布了myChart.data.datasets的内容。我已经使用了其他类似问题的一些过滤器,但它们都会使一些数据丢失。

我使用相同的对象来显示图表,它与多个数据集完美配合。发布数据时就会出现问题。

关于它可能发生什么的任何想法?真的很感激,谢谢!

1 个答案:

答案 0 :(得分:0)

这根本不重要。尽可能多的问题&发布了关于JSON中的循环对象的答案,它们都不是特定于解决方案的具体内容。例如,那些使用JSON.stringify()的replacer参数的人根本不工作(至少在这种情况下),因为数据将会丢失。

所以,对我来说,解决方案是来自Dojo javascript库的dojox.json.href。这是some documentation

这不是全部,但这里有一些代码以防有人需要它。首先序列化对象:

require(["dojox/json/ref"], function(){
    let data = { 
            datasets: dojox.json.ref.toJson(...) 
    }
    $.post('/save',
    ...
});

然后你反序列化它:

require(["dojox/json/ref"], function(){
      data = dojox.json.ref.fromJson(...);      
});

您可以像这样导入库:

<script src="//ajax.googleapis.com/ajax/libs/dojo/1.13.0/dojo/dojo.js"></script>

这是我能够在不丢失数据的情况下发布JSON对象的唯一方法。

希望它有所帮助!