C# mvc4&;谷歌图表-如何将线图数据从控制器传递到视图?
我正在尝试显示像这样收集的信息(控制器): 这给了我一个js异常,声明数据不是数组。可能不是像我尝试的那样传递数据我需要如何处理ajax调用返回的数据,使其格式有效?C# mvc4&;谷歌图表-如何将线图数据从控制器传递到视图?,c#,javascript,asp.net-mvc,C#,Javascript,Asp.net Mvc,我正在尝试显示像这样收集的信息(控制器): 这给了我一个js异常,声明数据不是数组。可能不是像我尝试的那样传递数据我需要如何处理ajax调用返回的数据,使其格式有效? 回答: 这执行了获取和非常灵活的转换数据,正如上面所写的控制器已经确认的那样。伟大的链接: var tdata=new google.visualization.DataTable(); 变量行=data.length; var cols=数据[0]。长度; tdata.addColumn('string',data[0][0]
回答: 这执行了获取和非常灵活的转换数据,正如上面所写的控制器已经确认的那样。伟大的链接:
var tdata=new google.visualization.DataTable();
变量行=data.length;
var cols=数据[0]。长度;
tdata.addColumn('string',data[0][0]);
对于(变量i=1;i
我对谷歌图表了解不多,但我知道这一行:
var data = google.visualization.arrayToDataTable($.post('GetDataAssets', {}).responseText);
不会使用服务器的json
响应填充data
,因为(除非另有规定)ajax
请求是以异步方式完成的
这就是解决问题的方法:
var jsonData = null;
$.post('GetDataAssets',
{},
function(data) { jsonData = data; },
'json');
var data = google.visualization.arrayToDataTable(jsonData);
$.post()返回一个XMLHttpRequest。其初始responseText将为空,直到请求完成,状态为4。您做错的是,您立即通过了XMLHttpRequest
更新
在你的控制器上试试这个
public JsonResult GetDataAssets() {
List<object> data = new List<object>();
data.Add(new[] { "Day", "Kasse", "Bonds", "Stocks", "Futures", "Options" });
data.Add(new[] { 01.03, 200, 500, 100, 0, 10 });
data.Add(new[] { 01.03, 300, 450, 150, 50, 30 });
data.Add(new[] { 12.15, 350, 200, 180, 80, 40 });
return Json(data);
}
公共JsonResult GetDataAssets(){
列表数据=新列表();
数据.添加(新[…]{“日”、“卡塞”、“债券”、“股票”、“期货”、“期权”});
添加(新[{01.03200500100,0,10});
添加(新[{01.03,300,450,150,50,30});
新增(新[{12.15、350、200、180、80、40});
返回Json(数据);
}
函数绘图图(){
$.get('/Home/GetData',{},
功能(数据){
var tdata=new google.visualization.DataTable();
tdata.addColumn('string','day');
tdata.addColumn('number','kasse');
tdata.addColumn('number','Bonds');
tdata.addColumn('number','Stocks');
tdata.addColumn('number','Futures');
对于(变量i=0;i
同时,多亏了haim770的提示,我得到了您所写的。现在的问题是,在我的控制器中,我将所有数据创建为字符串,而Google图表不喜欢定义为字符串的整数。。你知道吗?@peter,至少有一个轴(vAxis或hAxis)应该是整数。尝试返回列表。我已经很好地更新了答案。我真的想要这个。很多。
var data = google.visualization.arrayToDataTable($.post('GetDataAssets', {}).responseText);
var jsonData = null;
$.post('GetDataAssets',
{},
function(data) { jsonData = data; },
'json');
var data = google.visualization.arrayToDataTable(jsonData);
function drawChart() {
$.post('GetDataAssets', {}, function(d){
var data = google.visualization.arrayToDataTable(d);
var options = {
title: 'Performance'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
chart.draw(data, options);
});
};
public JsonResult GetDataAssets() {
List<object> data = new List<object>();
data.Add(new[] { "Day", "Kasse", "Bonds", "Stocks", "Futures", "Options" });
data.Add(new[] { 01.03, 200, 500, 100, 0, 10 });
data.Add(new[] { 01.03, 300, 450, 150, 50, 30 });
data.Add(new[] { 12.15, 350, 200, 180, 80, 40 });
return Json(data);
}
function drawChart() {
$.get('/Home/GetData', {},
function (data) {
var tdata = new google.visualization.DataTable();
tdata.addColumn('string', 'day');
tdata.addColumn('number', 'kasse');
tdata.addColumn('number', 'Bonds');
tdata.addColumn('number', 'Stocks');
tdata.addColumn('number', 'Futures');
for (var i = 0; i < data.length; i++) {
tdata.addRow([data[i].day, data[i].Kasse, data[i].Bonds, data[i].Stocks, data[i].Futures]);
}
var options = {
title: "Year Wheel"
};
var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
chart.draw(tdata, options);
});
}