1

我正在尝试为 highcharts 基本柱形图加载 csv 数据。

我在这里使用最新的数据模块方法,而不是像旧方法那样解析(http://www.highcharts.com/docs/working-with-data/data-module

我已经加载了所有需要的 js 库和模块(highcharts、导出和数据文件)并使用了以下代码:

HTML:

<body>
    <h1>
        <img src="images/header.png" alt= " This is header! "height = "100px"; width ="1350px">
    </h1>

    <div id="container">
    </div>
</body>

Javascript:

console.log("Enters")

$.get('test.csv', function(csv) {
  console.log("Function")
    $('#container').highcharts({   
        chart: {
            type: 'column'
        },
        data: {
            csv: csv
        },
        title: {
            text: 'Fruit Consumption'
        },
        yAxis: {
            title: {
                text: 'Units'
            }
        }
    });
});

console.log("Function ends");

我的屏幕是空的,只有标题显示

我的控制台显示如下:

Enters
Function ends

在 javascript 代码中,$.get 函数不起作用,它不仅仅进入内部。这里出了什么问题?我在 jquery 和/或 highcharts 上缺少一些非常基本的东西吗?

非常感谢任何反馈

更新 :

所以,我找到了这个链接,其中数据是从在线 CSV 文件加载的。但是,没有其他链接显示从本地系统加载的数据。

我的文件位于:D:\Optus\H2 Reporting\H2 Web Dashboard\test.csv 该函数永远不会进入 $.get

如何使用 $.get 函数访问此文件?

4

1 回答 1

1

如果您不熟悉 requireJS ( http://requirejs.org/ ),我强烈建议您检查一下。我认为它是我的 js-toolbox 中最重要的工具,并且几乎在我目前正在从事的每个项目中都使用它。requireJS 负责异步模块加载。使用文本插件,我们可以为您的模板加载 csv、json 或任何其他纯文本资产(如 html)。

这就是我在你的情况下会做的:

/bower.json(依赖项)

{
  "dependencies": {
    "requirejs": "~2.1.20",
    "text": "requirejs/text#~2.0.14"
  }
}

/index.html

<html>
    <body>
    </body>
    <script data-main="js/index" src="bower_components/requirejs/require.js"></script>
</html>  

/js/index.js

// define dependenies
require.config({
    paths: {
        text : '/bower_components/text/text',
        csvLoader : '/js/csv-loader'
    }
});

// Start the application 
require( ['csvLoader'], function( csvLoader ){
    console.log( csvLoader.getData() );
});

/js/csvLoader.js

define([
  'text!/assets/data.csv'   
], function( csv ){
    return {
        getData : function () {
            return csv; 
        }
    }
});

/assets/data.csv

id,username,ip
1,jrobertson0,20.206.114.95
2,spierce1,238.8.242.238
3,smoreno2,248.138.97.13
4,ghenry3,112.134.36.7
5,itaylor4,153.211.95.58

当它运行时,requireJS 确保 csv-loader.js 和它的依赖,即。data.txt 在被调用之前 已加载并可用。console.log( csvLoader.getData() );

或者你可以做var myData = csvLoader.getData();

正如您现在可能想象的那样,您可以使用 requireJS 来处理所有模块依赖项!

我希望这有帮助!快乐编码 =)

PS 请注意,使用 ES6,requireJS 变得非常多余,因为本机支持模块加载。

于 2015-12-02T09:34:03.863 回答