Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.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
C# mvc4&;谷歌图表-如何将线图数据从控制器传递到视图?_C#_Javascript_Asp.net Mvc - Fatal编程技术网

C# mvc4&;谷歌图表-如何将线图数据从控制器传递到视图?

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]

我正在尝试显示像这样收集的信息(控制器):

这给了我一个js异常,声明数据不是数组。可能不是像我尝试的那样传递数据我需要如何处理ajax调用返回的数据,使其格式有效?


回答:

这执行了获取和非常灵活的转换数据,正如上面所写的控制器已经确认的那样。伟大的链接:

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);
  });
      }