Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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 Morris图表附加了来自ajax的新数据_Javascript_Json_Ajax_Morris.js - Fatal编程技术网

Javascript Morris图表附加了来自ajax的新数据

Javascript Morris图表附加了来自ajax的新数据,javascript,json,ajax,morris.js,Javascript,Json,Ajax,Morris.js,我一直在做一个项目,我必须在莫里斯图表中显示一些订单细节。图表的数据采用JSON格式,并作为servlet的响应 有一个apply按钮和一个ToFromDatePicker,当我按下apply按钮时,JavaScript函数解析来自servlet的数据。它工作正常。我已经在我的网页中放置了chart div,我只在其中加载我的JSON数据 当我第一次按apply时,使用morris提供的setData()函数将数据加载并显示在图表中。详情如下: 但当我第二次按下应用按钮时,它会将数据添加到当前

我一直在做一个项目,我必须在莫里斯图表中显示一些订单细节。图表的数据采用JSON格式,并作为servlet的响应

有一个apply按钮和一个ToFromDatePicker,当我按下apply按钮时,JavaScript函数解析来自servlet的数据。它工作正常。我已经在我的网页中放置了chart div,我只在其中加载我的JSON数据

当我第一次按apply时,使用morris提供的setData()函数将数据加载并显示在图表中。详情如下:

但当我第二次按下应用按钮时,它会将数据添加到当前图表中,如下所示:

实现这一点的javascript函数如下所示:

function parselineData(method,url,id,no,keyx,keyy)
{   var datefrom=document.getElementById("from"+no).value;
    var dateto=document.getElementById("to"+no).value;
    if(datefrom=="")
    {   document.getElementById("lfrom"+no).style.color="red";
        document.getElementById("lfrom"+no).innerHTML="*From:";
    }
    else
    {   document.getElementById("lfrom"+no).style.color="black";
        document.getElementById("lfrom"+no).innerHTML="From:";
    }
    if(dateto=="")
    {   document.getElementById("lto"+no).style.color="red";
        document.getElementById("lto"+no).innerHTML="*To:";
    }
    else
    {   document.getElementById("lto"+no).style.color="black";
        document.getElementById("lto"+no).innerHTML="To:";
    }
    if(datefrom==""||dateto=="")
    {
    }
    else
    {   var xmlhttp=new XMLHttpRequest();
        var chart=Morris.Line
        ({  element: id,
            data:[{date:"0",orders:"0"}],
            xkey: keyx,
            ykeys: [keyy],
            labels: [keyy],
            smooth: true,
            resize: false
        });
        var data;
        xmlhttp.onreadystatechange=function()
        {   if (xmlhttp.readyState==4&&xmlhttp.status==200)
            {   data=JSON.parse(xmlhttp.responseText);
                //alert("My Data is" + data.toSource());
                chart.setData(data);
            }
        }
        xmlhttp.open(method,url+"?from"+no+"="+datefrom+"&to"+no+"="+dateto, true);
        xmlhttp.send();
    }
}

请提供帮助,以便我可以在不附加数据的情况下显示数据。

当图表的容器已包含图表时,会发生这种情况,您可以调用
setData
,在第一个图表旁边插入另一个新图表

您应该在调用
setData
之前清除容器。比如:

document.getElementById(id).innerHTML = "";
chart.setData(data);

我在rapheal.min.js上收到一个无响应的脚本错误,该id是div标记的id。您是否可以看到任何js错误?假设
id
看起来像
some name
,那么这里应该不会有任何问题,除非您将
some name
中的元素用于其他内容?这就是我的div。变量
id
中有什么?