可视化数据的正确方法是什么?

我正在尝试使用canvas.js!


由于我希望从 API 动态获取数据,因此我创建了一个数组,然后将其传递到 json 对象中。


所以我做了以下事情:


    <!DOCTYPE HTML>

    <html>

    <head>  

    <script>


    var xhr = new XMLHttpRequest(),

    method = "GET",

    url = "url";

    xhr.open(method, url, true);


    var data_array = [];

    xhr.send();


    window.onload = function () {


        xhr.onreadystatechange = function () {


            if (xhr.readyState === 4 && xhr.status === 200) {

                var api_data = xhr.responseText;

                var api_json = JSON.parse(api_data); 

                var data = api_json["data"];


                for(var i=0; i<data.length; i++) {


                    dp_data = data[i];

                    dp_median = dp_data["dp_median_price"];

                    dp_date = dp_data["date"];


                    var datearray = dp_date.split("-");

                    var newdate = datearray[0] + ', ' + datearray[1] + ', ' + datearray[2];


                    data_array.push({x:newdate, y:Number(dp_median)});

                }


                var chart = new CanvasJS.Chart("chartContainer", {

                    title: {

                        text: "title"

                    },

                    }

                ]

            });


在这里,我无法读取 data_array。我如何在图表数据中传递它?上面的方法是行不通的!但是当我以静态方式传递数据时,它就起作用了!


我的数组格式与静态信息示例相同!


console.log(data_array) = 的输出


    0:

      x: "2019, 08, 29"

      y: 1935

    __proto__: Object


茅侃侃
浏览 174回答 1
1回答

不负相思意

问题在于您如何尝试跟踪您的 ajax 请求。该onredystatechange事件在 xhr 请求执行期间多次触发。0 - UNSENT 客户端已创建。open() 尚未调用。1 - 已调用 OPENED open()。2 - HEADERS_RECEIVED send() 已被调用,并且标题和状态可用。3 - LOADING 下载 responseText 保存部分数据。4 - DONE 操作完成。只有当状态为 4 时,您才应该开始处理您的数据。xhr.onreadystatechange = function () {&nbsp; &nbsp;if (xhr.readyState ==0 4 and xhr.status === 200) {&nbsp; &nbsp; &nbsp; &nbsp;//Process your data
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript