如何解决'Uncaught TypeError:将循环结构转换为JSON'

时间:2014-01-03 12:18:44

标签: javascript extjs

我正在执行一个网页但在控制台上检查时显示以下错误。 '未捕获的TypeError:将循环结构转换为JSON'

console.log(JSON.stringify(physicianInfo));
 Ext.Ajax.request(
   { async : true, 
     url : Global.URLPrefix + 'addPhysicianInformation', 
     method : 'GET', 
     params : { 
         physicianInfo : JSON.stringify(physicianInfo), callFrom : 'add' },
     success : function (request, resp) { 
         var physician1 = Ext.decode(request.responseText); console.log(physician1);

2 个答案:

答案 0 :(得分:5)

当对象之间有循环引用时会发生这种情况。

例如:

A references B
B references A

当你尝试序列化A时,它需要序列化B,但是它需要再次序列化A并且无法用JSON表示该循环。结果将是无限递归循环。

您需要识别并删除循环引用。请记住,链条可能比上面的更复杂:

A references B
B references C
C references A

存在多少链接或存储方式无关紧要。如果您可以从一个对象转到另一个对象,然后通过任何路径返回到第一个对象,那么它就是一个循环引用。

答案 1 :(得分:0)

JSON不能包含循环引用(你知道循环引用是什么吗?)

在序列化之前,您需要重新格式化数据结构以避免它们。