【问题标题】:Data in highchart JSON format is correcthighchart JSON 格式的数据是正确的
【发布时间】:2016-08-19 12:00:13
【问题描述】:

我有这样的代码

 public static string summarydata(string RegNo)
    {

        try
        {
            TrackDataEntities1 sd = new TrackDataEntities1();

            var mdata = new TrackDataEntities1().spsumdata(RegNo)
            .Select(s => new { month = s.Month }).ToArray();

            var sdata = new TrackDataEntities1().spsumdata(RegNo)
             .Select(s => new { s.VName, s.total }).ToArray();
            return Newtonsoft.Json.JsonConvert.SerializeObject(mdata) + "*" + Newtonsoft.Json.JsonConvert.SerializeObject(sdata);

        }
        catch (Exception)
        {
            throw new Exception();
        }

    }

现在这会返回这样的数据

"[{\"month\":\"July\"},{\"month\":\"June\"},{\"month\":\"June\"},
 {\"month\":\"August\"},{\"month\":\"July\"},{\"month\":\"June\"},
 {\"month\":\"May\"},{\"month\":\"June\"}]*[{\"VName\":\"DDSB\",\"total\":1},
 {\"VName\":\"DPSB\",\"total\":1},{\"VName\":\"DSB\",\"total\":1},
 {\"VName\":\"MV\",\"total\":5},{\"VName\":\"MV\",\"total\":11},
 {\"VName\":\"MV\",\"total\":7},{\"VName\":\"MV\",\"total\":1},
 {\"VName\":\"PSB\",\"total\":1}]"

jquery 更新的 JQUERY $(函数 () {

            $('#tabledata').on('click', 'tr', function () {
                var row = $(this);
                var regno = row.find('td')[0].firstChild.data;
                var obj = {};
                obj.RegNo = regno;
                Getsumdata(obj);
                return false;

            });
        });
        function Getsumdata(obj) {
            $.ajax({
                type: "POST",
                url: "WebForm1.aspx/summarydata",
                data: JSON.stringify(obj),
                contentType: "application/json;charset=utf-8",
                dataType: "json",
                async: true,
                cache: false,
                success: function (result) {
                   alert(JSON.stringify(result.d));

                var data1 = result.d.split('*')[0];
                console.log(typeof (data1)); //Still a String...
                var data11 = JSON.parse(data1);
                console.log(data11); //

                    $('#sum').highcharts({
                        title: {
                            text: 'Combination chart'
                        },
                        xAxis: {
                            categories: data11,

                            title: {
                                text: null
                            }
                        },
                        labels: {
                            items: [{
                                html: 'Total fruit consumption',
                                style: {
                                    left: '50px',
                                    top: '18px',
                                    color: (Highcharts.theme && Highcharts.theme.textColor) || 'black'
                                }
                            }]
                        },
                       // series:data2
                      series: [{
                        type: 'column',
                        name: 'Jane',
                        data: [3, 2, 1, 3, 4]
                    }, {
                        type: 'column',
                        name: 'John',
                        data: [2, 3, 5, 7, 6]
                    }, {
                        type: 'column',
                        name: 'Joe',
                        data: [4, 3, 3, 9, 0]
                    },
                   ]
                    });

                }
            });
        }
    </script>

但图表看起来像这样

现在的问题是 JSON 看起来是正确的,我认为为什么图表中没有填充数据 .. 我使用 BAR highchart

请问有什么解决办法吗?

【问题讨论】:

    标签: javascript jquery json highcharts


    【解决方案1】:
    1. data2 仍然是一个字符串,你必须解析它。
    2. 看看Docs如何添加图表数据,你必须转换你当前的数据。

    var a = "[{\"month\":\"July\"},{\"month\":\"June\"},{\"month\":\"June\"}, {\"month\":\"August\"},{\"month\":\"July\"},{\"month\":\"June\"}, {\"month\":\"May\"},{\"month\":\"June\"}]*[{\"VName\":\"DDSB\",\"total\":1}, {\"VName\":\"DPSB\",\"total\":1},{\"VName\":\"DSB\",\"total\":1}, {\"VName\":\"MV\",\"total\":5},{\"VName\":\"MV\",\"total\":11}, {\"VName\":\"MV\",\"total\":7},{\"VName\":\"MV\",\"total\":1}, {\"VName\":\"PSB\",\"total\":1}]";
    
    var d = a.split('*')[1];
    console.log(typeof(d)); //Still a String...
    var e = JSON.parse(d);
    console.log(e); //Yay an object.

    【讨论】:

    • 当我尝试这个时.. 成功:function (result) { var d = result.split('*')[1]; console.log(typeof (d)); //仍然是一个字符串... var e = JSON.parse(d);控制台.log(e);并像这样在系列上写 e ..series: e this show error result.split is not a function
    【解决方案2】:

    您似乎没有将正确的数据传递给类别和系列。 请以如下方式转换您的数据, data1 代表类别,应该是这样的

    ["May","June","July","August"]
    

    虽然您的 data2 表示您想要为给定月份绘制的系列数据,但应如下所示。

    [1,10,12,5]
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    相关资源
    最近更新 更多