为什么JSON.stringify($('#calendar')。fullcalendar('clientEvents'))失败?

时间:2016-04-04 06:50:59

标签: javascript jquery arrays json fullcalendar

作为标题,当我尝试:

myString = JSON.stringify($('#calendar').fullcalendar('clientEvents'));

失败了。我尝试提醒myString,但我看到一系列[Object object], ... .但是如果我尝试提醒myArray[0].title例如,它会正确返回。

我做错了什么?

P.S。目标是获取一个字符串以通过AJAX保存在文件中。

1 个答案:

答案 0 :(得分:3)

您的结果告诉您,registerListener(target, type, callback) { const listenerFunction = target.addEventListener ? 'addEventListener' : 'attachEvent'; const eventName = target.addEventListener ? type : 'on' + type; target[listenerFunction](eventName, callback); }, fullCalendar方法为您提供的数组中的对象无法直接转换为JSON。我在disjunction页面上得到的结果略有不同(我收到有关尝试转换循环结构的错误);我认为,您使用的FullCalendar版本与他们使用的版本之间存在差异,或者您的浏览器和我的处理圆形结构的方式存在差异。无论哪种方式,物体显然都不能按原样使用。

  

目标是获取一个字符串以通过AJAX保存在文件中。

您可以通过在阵列上使用clientEvents来获取可以成功转换为JSON的对象,将您想要的属性列入白名单(或将您不想要的属性列入黑名单)。我想)。

以下是将mapstartend属性列入白名单的示例:

title

下面列出了一个将var json = JSON.stringify($("#calendar").fullCalendar("clientEvents").map(function(e) { return { start: e.start, end: e.end, title: e.title }; })); 列入黑名单以及以source开头的任何属性:

_

......在我们的网站上为我工作。

以下是这两个版本的ES2015版本:

白名单:

var json = JSON.stringify($("#calendar").fullCalendar("clientEvents").map(function(e) {
    var rv = {};
    Object.keys(e)
        .filter(function(k) {
            return k != "source" && !k.startsWith("_");
         })
        .forEach(function(k) {
            rv[k] = e[k];
        });
    return rv;
}));

黑名单:

let json = JSON.stringify($("#calendar").fullCalendar("clientEvents").map(e => ({
    start: e.start,
    end: e.end,
    title: e.title
})));