我正在使用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的内容。我已经使用了其他类似问题的一些过滤器,但它们都会使一些数据丢失。
我使用相同的对象来显示图表,它与多个数据集完美配合。发布数据时就会出现问题。
关于它可能发生什么的任何想法?真的很感激,谢谢!
答案 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对象的唯一方法。
希望它有所帮助!