【问题标题】:AngularJS TypeError: Converting circular structure to JSON at Object.stringify (native)AngularJS TypeError:在 Object.stringify 中将循环结构转换为 JSON(本机)
【发布时间】:2016-12-13 17:04:17
【问题描述】:

我正在尝试让这段代码正常工作。显然,代码中有循环引用,但我找不到。有人可以帮帮我吗?

var appjson = '{\"APP_DATA_RETRIEVED\" : \"fail\"}';
var appPostRequest = $.get(appurl, data, appconfig);
appPostRequest.done(function(appdata) {
    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()
});

【问题讨论】:

  • 在我看来,这行:appjson = JSON.stringify(appdata); 引发了错误。尝试调试它。如果在上述行之前插入 console.log(appdata); 会发生什么。
  • 什么是appData
  • @hurricane {"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 ,"用户名":"bojan1037"},{"挑战":"h062sm69lpkib7t3sk4fuppi1v","startTime":"2016-04-26 14:53:31.0","successfullyCompleted":false,"id":10,"用户名":"bojan1037"}],"错误":""}
  • 我认为 appdata 已经返回 string 您再次尝试转换为字符串。
  • Appdata 是一个 JSON 对象

标签: javascript angularjs json typeerror circular-reference


【解决方案1】:

您的 JSON 有问题。如果您将其复制并粘贴到笔记本中,您可以看到它。

服务返回错误的对象。在文本文档中检查您的服务结果,而不是在浏览器中。

编辑:

在这个例子中,我创建了使用 true JSON 数据的小提琴。

var appdata = {"Response":[{"challenge":"rp6lssenku72b2ppr4gkjb4q92","startTime":"2016-04-26 10:41:46.0","successfullyCompleted":false,"id":1,"username":"bojan1037"},{"chalennge":"ljtqvmk1mcqqqg5m0op0fljnek","startTime":"2016-04-26 10:49:56.0","successfullyCompleted":false,"id":4,"username":"bojan1037"},{"chalennge":"h062sm69lpkib7t3sk4fuppi1v","startTime":"2016-04-26 14:53:31.0","successfullyCompleted":false,"id":10,"username":"bojan1037"}],"Error":""}
var date = 1;
var 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);

https://jsfiddle.net/xnku481d/

在此示例中,我创建了使用 错误 JSON 数据的小提琴。

var date = 1;
var appdata = {"Response":[{"challenge":"rp6lssenku72b2ppr4gkjb4q92","startTime":"2016-04-26 10:41:46.0","successfullyCompleted":false,"id":1,"username":"bojan1037"},{"chalenge":"ljtqvmk1mcqqqg5m0op0fljnek","startTime":"2016-04-26 10:49:56.0","successfullyCompleted":false,"id":4,"username":"bojan1037"},{"chall‌​enge":"h062sm69lpkib7t3sk4fuppi1v","startTime":"2016-04-26 14:53:31.0","successfullyCompleted":false,"id":10,"username":"bojan1037"}],"Erro‌​r":""}

    var 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);

https://jsfiddle.net/xnku481d/1/

您需要控制这些数据。错了。

【讨论】:

  • 服务是什么意思?
  • 另外@hurricane 只是你的标签。
  • $.get 将从 URL 获取数据。因此,该 url 是一个服务,该服务返回一个对象。 @詹姆斯法尔特。如果您发表评论,stackoverflow 将向答案所有者发送通知。
  • 这是我在记事本中粘贴后得到的: {"Response":[{"challenge":"rp6lssenku72b2ppr4gkjb4q92","startTime":"2016-04-26 10:41:46.0", "successfullyCompleted":false,"id":1,"username":"bojan1037"},{"chall‌​enge":"ljtqvmk1mcqqqg5m0op0fljnek","startTime":"2016-04-26 10:49:56.0","成功完成":false,"id":4,"username":"bojan1037"},{"chall‌​enge":"h062sm69lpkib7t3sk4fuppi1v","startTime":"2016-04-26 14:53:31.0","successfullyCompleted ":false,"id":10,"username":"bojan1037"}],"Erro‌​r":""}
  • 我真的不知道你是如何在“挑战”中得到垃圾的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2018-10-05
  • 2016-01-22
  • 2017-06-29
  • 2019-01-05
相关资源
最近更新 更多