Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript异常:未捕获类型错误:将循环结构转换为JSON_Javascript_Json - Fatal编程技术网

JavaScript异常:未捕获类型错误:将循环结构转换为JSON

JavaScript异常:未捕获类型错误:将循环结构转换为JSON,javascript,json,Javascript,Json,我有一个JSON对象: [#1={id:"2012-05-04", title:"Scheduled", start:(new Date(1336096800000)), source:{events:[#1#], className:[]}, _id:"2012-05-04", _start:(new Date(1336089600000)), end:null, _end:null, allDay:true, className:[]}] 我试图将其严格化: var test = JSON

我有一个JSON对象:

[#1={id:"2012-05-04", title:"Scheduled", start:(new Date(1336096800000)), source:{events:[#1#], className:[]}, _id:"2012-05-04", _start:(new Date(1336089600000)), end:null, _end:null, allDay:true, className:[]}]
我试图将其严格化:

var test = JSON.stringify(resourceVacation, censor(resourceVacation));

function censor(censor) {
    return (function() {
        var i = 0;
        return function(key, value) {
            if (i !== 0 && typeof(censor) === 'object' && typeof(value) == 'object' && censor == value)
                return '[Circular]';

            ++i; // so we know we aren't using the original object anymore

            return value;
        }
    })(censor);
}
我使用这里提到的审查员:n

但是,我在浏览器上遇到以下异常:

未捕获类型错误:将循环结构转换为JSON

以下是Java脚本对象:

我在Mozilla浏览器中使用toSource()获得了上一个JSON对象。 知道怎么修吗

========================================更新========================

实际上,我需要从一开始就与您分享scnerio: 1-最初:我有一个表单,最后我构建了java脚本对象,它是:

#1=[{id:"2012-05-03", title:"Scheduled", start:(new Date(1336010400000)), source:{events:#1#, className:[]}, _id:"2012-05-03", _start:(new Date(1336003200000)), end:null, _end:null, allDay:true, className:[]}]
此对象通常被字符串化。。。请注意,这对于稍后将触发异常的服务器来说是典型的

2-然后,我使用以下命令从此数组中删除对象:

function deleteVacation(day) {
    for (var index = 0; index < resourceVacation.length; index++) {
        if (resourceVacation[index].id == day)

            resourceVacation.splice(index,1);
    }
功能删除假期(天){
对于(var索引=0;索引
3-当我在删除单个对象后尝试字符串化该数组时,我得到了提到的异常。
所以..anu知道为什么它第一次通过而第二次失败了!!

你不能用JSON编码日期对象


From:“值可以是双引号中的字符串、数字、true或false或null、对象或数组。这些结构可以嵌套。”

问题在于源-

您应该创建不带源对象的对象副本


这就是我在FullCalendar中解决问题的方法。

验证您的JSON。它似乎无效:实际上我已经拥有的是object数组,我使用obj.toSource()获取该JSON。我已经更新了我的帖子。如果您有任何问题,请反馈给我。没有“JSON对象”这类东西.JSON是字符串的格式。您拥有的只是一个“对象”,直到它被序列化为有效的JSON。这是一个有价值的信息。Thx cHao。你知道我该如何解决这个问题吗?我不明白你的意思,你能详细说明一下吗!@Echo:这很简单。JSON中的值在它们可以是什么类型上有限制。答案是日期不是这些类型之一。如果你想要一个日期,一个简单的方法解决这个问题的方法是将日期转换为字符串或数字。根据您的需要,一个或另一个可能更好。实际上,我认为这可能只是问题的一部分。错误(以及您链接到的其他答案)表示您正在尝试对具有循环引用的对象进行编码。我将尝试删除
开始
\u开始
值,如果这无法解决问题,请删除数组或对象属性。如果解决了问题,请检查以确保您删除的数组或对象中没有引用更高的值嗯,我不太确定。不过命名函数
delete
有点可怕。如果你使用的是Chrome,我会尝试“暂停未捕获异常”功能(在js调试工具中单击停止符号/暂停图标,直到它变成紫色)。当抛出错误时,它应该会中断,让您有机会查看程序的当前状态。坦率地说,这是我刚刚知道的一个新功能。谢谢与我共享。关于异常之前我的程序的状态,正如我所提到的。让我抓狂的是,我可以将对象添加到此数组中,并且它会正常字符串化。当我从数组中删除一个对象时,问题就出现了。如果你有任何想法,请告诉我。有人可以解释如何实现这一点吗?