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

这是到目前为止我得到的:

单击按钮时触发的功能:

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


假设我已经设置了变量item和tl,应该重新绘制时间轴的函数

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


所以我的问题是为什么它不起作用?知道数据显示在控制台中。

数据应填充以下数据:

{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时,它才有效!

关于javascript - 通过AJAX结果显示数据集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33544694/

10-12 00:37
查看更多