通过 AJAX 结果查看数据集

Vis DataSet via AJAX result

我正在使用 visjs timeline 制作时间轴,我有一个按钮可以在单击事件时重绘该时间轴。重绘是通过使用 AJAX 从 timeline.php 获取数据来完成的,但是接收到的数据在 DataSet 中不起作用!

这是我目前得到的:

点击按钮触发的函数:

function redrawTL(){
    $.ajax({
        type: "POST", url: "ajax/timeline.php", data: {},
        success: function(data){
            redraw(data);
        }
    });
}

假设我已经设置了变量 items 和 tl,应该重绘时间线的函数

function redraw(data){
    console.log(data);
    items = new vis.DataSet([ data ]); // This doesn't!!
    tl.destroy();
    tl = new vis.Timeline(container, items, options);
}

所以我的问题是为什么它不起作用?!知道数据显示在console.

数据应该用以下数据填充:

{id: 0, content: '07:10:12',   start: today.clone().add(25606, 'seconds'), 'className': 'tmstyle'}, 
{id: 1, content: '00:40:06',   start: today.clone().add(56563, 'seconds'), 'className': 'arretNU'}, 
{id: 2, content: '00:01:07',   start: today.clone().add(63312, 'seconds'), 'className': 'arretNU'}, 
{id: 3, content: '00:00:16',   start: today.clone().add(63389, 'seconds'), 'className': 'arretNU'}

如果我将重绘函数设为静态,它就可以正常工作。

经过一天的尝试,我终于想出了以下解决方案:

            function redrawTL(){
                $.ajax({
                    type: "POST",url: "ajax/timeline.php", data: {},
                    success: function(data){
                        var result = JSON.parse(JSON.parse(JSON.stringify(data)));
                        items.clear();
                        items.add(result);
                        timeline.fit();
                    }
                });
            }

只有当我在另一个上使用 JSON.parse 时它才有效!