Javascript 获取ajax数据后重新加载nvd3图表

Javascript 获取ajax数据后重新加载nvd3图表,javascript,ajax,charts,nvd3.js,Javascript,Ajax,Charts,Nvd3.js,我使用nvd3使用从ajax请求中获取的数据绘制条形图 当我点击按钮时,它将执行ajax请求并为图表发送新数据 请求工作正常,我从ajax正确地获取了数据,唯一的问题是图表没有重新加载 我尝试这样做: <script type='text/javascript'> var chart; var data = [{key: 'A', values: [{'label' : '2014' , 'value' : 9}....; nv.addGraph(function () { i

我使用nvd3使用从ajax请求中获取的数据绘制条形图

当我点击按钮时,它将执行ajax请求并为图表发送新数据

请求工作正常,我从ajax正确地获取了数据,唯一的问题是图表没有重新加载

我尝试这样做:

<script type='text/javascript'>
var chart;
var data = [{key: 'A', values: [{'label' : '2014' , 'value' : 9}....;
nv.addGraph(function () {
   if (chart) {
      chart.remove();
   }
   chart = nv.models.multiBarChart()
           .x(function (d) { return d.label })
           .y(function (d) { return d.value })
   chart.yAxis
            .tickFormat(d3.format(',.2f'));
   d3.select('#chart1 svg')
            .datum(data)
            .call(chart);
  nv.utils.windowResize(chart.update);
  return chart;
  });

  function test() {
       value = 2;
       $.ajax({
              type: "POST",
              url: "index.aspx/Getval",
              data: '{val: "' + value + '" }',
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function (response) {
                       keyValue = response.d;
                       alert(keyValue); // show [{key: 'A', values: [{'label' : '2014' , 'value' : 9}....
                       data = keyValue;
                       $("#chart1 svg").empty();
                       chart.update();
                       }
              });
           }
 </script>
 <input type="button" onclick="javascript: test();" value="test"/>
 <div id="chart1">
 <svg></svg>                                    
 </div> 

var图;
变量数据=[{key:'A',值:[{'label':'2014',值:9}。。。。;
nv.addGraph(函数(){
如果(图表){
chart.remove();
}
chart=nv.models.multiBarChart()
.x(函数(d){返回d.label})
.y(函数(d){返回d.value})
图1.yAxis
.tickFormat(d3.format(',.2f'));
d3.选择(“#图表1 svg”)
.基准(数据)
.电话(图表);
nv.utils.windowResize(图表更新);
收益表;
});
功能测试(){
数值=2;
$.ajax({
类型:“POST”,
url:“index.aspx/Getval”,
数据:'{val:'+value+'''}',
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
成功:功能(响应){
keyValue=响应。d;
警报(keyValue);//显示[{key:'A',值:[{'label':'2014',值:9}。。。。
数据=键值;
$(“#图表1 svg”).empty();
chart.update();
}
});
}

你知道为什么我不能更新图表吗?谢谢

也许nvd3不喜欢
datum
?如果没有ajax,它工作得很好,图形出现了,或者你应该调用
d3.select(“#chart1 svg”).datum(data)。call(chart)
再次调用(chart),抱歉,我想不出什么明显的事情了……啊,好吧:
data=JSON.parse(keyValue);
edit:nvm我猜jquery.ajax已经这样做了……您确定返回的json对象的格式正确吗?确认您应该调用
d3。选择(…).datum(…).call(chart)