• D3.js加载csv和json数据


    1.加载数据的基本命令

    D3提供了方法可以对不同的数据类型进行加载,比如d3.text(), d3.xml(), d3.json(), d3.csv(), 和d3.html().

    <!DOCTYPE html>
    <head>
        <meta  http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
        <title>test</title>    
        <script type="text/javascript" src="d3.js"></script>    
    </head>    
    <body>
        <div id="borderdiv"> 123</div>      
    </body>
        
    <script>      
        d3.csv("cities.csv", function(data) {console.log(data)});
        d3.json("flare.json",function(error,data2) {console.log(error, data2)});
    </script>
    
    </html>

    上面的代码中加载了一个csv文件和一个json文件,function实际是一个callback,当然其中的error如果不需要的话可省去。

    2.使用server来server file

    在chrome中测试上面的代码会出现以下错误:

    XMLHttpRequest cannot load file:/cities.csv. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

    Uncaught NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 

    这是因为安全机制禁止了cross origin request,不允许直接读取本地文件, 所以我们需要一个webserver来server我们的数据。

    window环境下可以在cmd中执行如下命令(前提是安装了npm)

    nmp install http-server
    http-server C:D3Test

    这样,我们便启动了一个server, 浏览器访问http://localhost:8080/index.html,然后便可以在console中看到加载的数据。

    d3.csv()和d3.json加载数据返回的一个json对象的数组。

     3.异步加载

    将上面的script部分代码修改如下:

     console.log("before csv ");
     d3.csv("cities.csv", function(data) {console.log(data)});
     console.log("before json");
     d3.json("flare.json",function(error,data2) {console.log(error, data2)});

    执行结果如下:

    可以看到,实际执行顺序和代码中顺序并不符合。原因是d3.csv()和d3.json是异步加载数据的,而加载数据往往比其他操作需要更多的时间。也是由于这样原因,如果在数据加载完成之间进行数据请求将出现错误。

    我们有两种方法可以绕开异步加载的问题

    第一种:将数据加载和处理嵌套在一起

    d3.csv("somefiles.csv", function(data) {doSomethingWithData(data)});

    第二种:使用一些helper类库(queue.js)来实现在数据加载完成后出发相应的操作。

    参考:D3.js in Action

  • 相关阅读:
    postman 调用webservice方法
    .net core 传JSON对象Controller接收不到的问题处理方法
    java不同基本类型之间的运算
    重写和重载
    java基本数据类型介绍
    浏览器tab页签切换事件
    设计模式之观察者模式
    设计模式之状态模式
    设计模式之备忘录模式
    设计模式之迭代器模式
  • 原文地址:https://www.cnblogs.com/shuaiwang/p/4608378.html
Copyright © 2020-2023  润新知