【问题标题】:Adding data to highstocks by pushing array通过推送数组将数据添加到 highstocks
【发布时间】:2014-12-14 01:28:01
【问题描述】:

一直在努力将我的数据从数组中获取到图表中。这是我的代码,

<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "<%=ResolveUrl("Services/HighstockService.asmx/TempData") %>",
            data: "{}", /* Sending specific indata */
            dataType: "json",           
            success: function (Result) {
                //debugger;
                Result = Result.d;
                var tempData = [];
                for (var i in Result) {
                    var serie = new Array("[" + parseInt(Result[i].Date.substr(6)) + "," + Result[i].Value + "],");
                    tempData.push(serie);
                }
                DrawTempChart(tempData);
            },
            error: function (Result) {
                alert("Error");
            }
        });
    }); 
    function DrawTempChart(tempData) {
        debugger;
        $('#tempChart').highcharts('StockChart', {
            title: {
                text: 'AAPL Stock Price'
            },
            type: 'datetime',
            dateTimeLabelFormats: {
                second: '%Y-%m-%d %H:%M:%S',
                minute: '%Y-%m-%d %H:%M',
                hour: '%Y-%m-%d %H:%M',
                day: '%Y %m-%d',
                week: '%Y %m-%d',
                month: '%Y-%m',
                year: '%Y'
            },
            series: [{
                name: 'AAPL',
                data: [tempData],
            }]
        });
    }
</script>

我将括号和逗号添加到数组中的每个索引中,以遵循 highstocks 如何接受数据的结构。调试时,我会收到这样的数据:“[1418017375000,33]”。

由于 javascript 在从 Web 服务移动它时添加了括号和正斜杠,我需要解析日期。我不确定它是否在 javascript 中正确格式化以在图表中工作。

由于我真的无法调试 DrawTempChart 函数,我实际上并不知道数组是如何发送到该函数中的。任何人都可以看到我做错了什么?

[edit] 可能应该补充一点,我最接近输出的是仅显示图表上数组中的最后一个索引。

【问题讨论】:

    标签: javascript asp.net highstock


    【解决方案1】:

    首先series中的data应该是这样的:

    [[UTCTime1, value1], [UTCTime2, value2], ...]
    

    所以将data: [tempData] 行改为:

    data: tempData
    

    二、新建Array时,格式不是这样的:

    var serie = new Array("[" + parseInt(Result[i].Date.substr(6)) + "," + Result[i].Value + "],");
    

    你应该这样写:

    var serie = new Array(parseInt(Result[i].Date.substr(6)), Result[i].Value);
    

    它会自动添加[],[item1, item2]

    当您将serie 推入tempData 时,它也会将, 放在项目之间。

    最后,请确保 Result[i].Date.substr(6) 创建正确且已排序的 13 位 UTC 数字,因为 highcharts 不会对数据进行排序。

    【讨论】:

    • 哇...一直如此接近,从一开始的问题就是“数据:tempData”。现在它正在工作!爱你哥!没有同性恋;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-06
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    相关资源
    最近更新 更多