Javascript 获取ajax数据后重新加载nvd3图表
我使用nvd3使用从ajax请求中获取的数据绘制条形图 当我点击按钮时,它将执行ajax请求并为图表发送新数据 请求工作正常,我从ajax正确地获取了数据,唯一的问题是图表没有重新加载 我尝试这样做: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
<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)