我正在尝试使用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
1 回答
不负相思意
TA贡献1777条经验 获得超10个赞
问题在于您如何尝试跟踪您的 ajax 请求。
该onredystatechange
事件在 xhr 请求执行期间多次触发。
0 - UNSENT 客户端已创建。open() 尚未调用。
1 - 已调用 OPENED open()。
2 - HEADERS_RECEIVED send() 已被调用,并且标题和状态可用。
3 - LOADING 下载 responseText 保存部分数据。
4 - DONE 操作完成。
只有当状态为 4 时,您才应该开始处理您的数据。
xhr.onreadystatechange = function () {
if (xhr.readyState ==0 4 and xhr.status === 200) {
//Process your data
添加回答
举报
0/150
提交
取消