AngularJs解决了由循环JSON结构引起的错误

AngularJs resolving errors caused by circular JSON Structures

本文关键字:错误 结构 JSON 解决 循环 AngularJs      更新时间:2023-09-26

所以我有以下错误的问题:

chartsuccessfulapploginsController.js:59 TypeError:将圆形结构转换为JSON在对象。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怎么可能有一个循环引用。有人能帮我弄明白吗?谁回答正确,我永远感激他。

您不需要在代码中将变量类型从json转换为字符串:appjson = JSON.stringify(appdata); .

我认为你最好在angularjs中使用$httpProvider

在这个链接上检查你自己的API。

似乎罪魁祸首是您的变量appjson。不知何故,它正在创建一个循环引用与严格的JSON对象。而不是:

var appjson = '{'"APP_DATA_RETRIEVED'" : '"fail'"}';

你可以试着这样声明:

var appjson = {};

当您觉得响应出乎意料时,您可以稍后用所需的JSON值填充这个空对象。