【发布时间】:2016-08-10 02:12:24
【问题描述】:
所以我遇到了以下错误:
chartsuccessfulapploginsController.js:59 TypeError:将循环结构转换为 JSON 在 Object.stringify(本机)
使用这段代码,从图表中检索数据:
var appjson = '{\"APP_DATA_RETRIEVED\" : \"fail\"}';
var appPostRequest = $.get(appurl, data, appconfig);
appPostRequest.done(function(appdata){
console.log(appdata);
var date=$scope.final.rows[selectedItem.row].c[0].v;
appjson = JSON.stringify(appdata);
console.log(appjson);
var postResponse = jQuery.parseJSON(appjson);
var postResponse2=postResponse.Response;
var post=[];
console.log(postResponse2.length);
for(i=0; i<postResponse2.length; i++){
var data = postResponse2[i];
var dt = new Date(postResponse2[i]['startTime']);
var day = (dt.getMonth() + 1) + '-' + dt.getDate() + '-' + dt.getFullYear();
if(day==date){
post=post.concat(data);
console.log(data);
}
}
console.log(post);
$scope.gridOptions8.data=post;
$scope.failchartvisible=true;
$scope.successchartvisible=false;
console.log($scope.gridOptions8.data);
$scope.$apply()//error originates from here
done 函数中的“appdata”参数是一个 JSON 对象,始终具有这种结构:
{
"Response": [{
"challenge": "rp6lssenku72b2ppr4gkjb4q92",
"startTime": "2016-04-26 10:41:46.0",
"successfullyCompleted": false,
"id": 1,
"username": "bojan1037"
}, {
"challenge": "ljtqvmk1mcqqqg5m0op0fljnek",
"startTime": "2016-04-26 10:49:56.0",
"successfullyCompleted": false,
"id": 4,
"username": "bojan1037"
}, {
"challenge": "h062sm69lpkib7t3sk4fuppi1v",
"startTime": "2016-04-26 14:53:31.0",
"successfullyCompleted": false,
"id": 10,
"username": "bojan1037"
}],
"Error": ""
}
我知道它与 json.stringify 有关。但是,我一生都无法弄清楚如何修复该错误,因为我看不到该 appdata 如何具有循环引用。谁能帮我弄清楚?谁回答正确,我将永远感激不尽。
【问题讨论】:
-
appdata是否与您在 JSON.stringify 之前提供的完全一样?你console.log了吗? -
@MMhunter 是的。完全一样。
-
看起来问题不在您给定的代码中,因为它源自
$scope.$apply()。我认为可能在一些 $watch 或绑定函数中。 -
问题是这整个事情以前都有效。唯一的区别是 JSON 只是 JSON 对象的数组
-
目前还不清楚您的数据在哪里被破坏,但很清楚的是您正在尝试使用 jQuery 来解析和修改您在角度绑定中使用的数据,这通常是不必要的并且容易出错。
标签: javascript angularjs json intellij-idea circular-dependency