代码之家  ›  专栏  ›  技术社区  ›  conner.xyz

通过Chrome中的Fetch API在D3 v5中加载JSON?

  •  1
  • conner.xyz  · 技术社区  · 8 年前

    在Chrome中运行以下代码时, d3.json 回调直到 pubs.json 已加载到另一个浏览器选项卡/窗口中。当 d3。json 被粘贴到Chrome浏览器控制台中,如果在Firefox中运行,它会工作。。。

    我用的是Python的 http.server 在…上 localhost .

    为什么它在Chrome中会这样?

    目录结构:

    proj/
      index.html
      pubs.json
    

    代码:

    <html>
      ...
      <body>
        ...
        <script>
            $(document).ready(function(){
                d3.json("/pubs.json").then(function(data) {
                    console.log(data);
                });
            });
        </script>
      </body>
    </html>
    
    1 回复  |  直到 8 年前
        1
  •  -1
  •   rioV8    8 年前

    Chrome是迂腐的 CORS ( Same Origin )

    尝试以下方法:

    d3.json(chartURL, {credentials: 'same-origin'}).then(function(data) {
        ....
    });
    

    如果文件是由另一个选项卡加载的,那么可以在缓存中找到它,并且可能要求不再那么严格。