8

我的数据集托管在我的 Dropbox 帐户上,但不是调用它的 Javascript 文件。我正在使用 D3 和 Polymaps 来可视化数据,但是我收到一条错误消息 - “XMLHttpRequest cannot load https://www.dropbox.com/s/89adzt973quosda/solaruse.json . No 'Access-Control-Allow-Origin ' 请求的资源上存在标头。因此,不允许访问源 'null'。(保管箱文件的链接有效,因此您可以查看)

这是我用来加载 JSON 文件的代码(我正在本地开发站点)我不完全确定从这一点开始该怎么做。

var po = org.polymaps;
        //Create map object, append to #map
        var map = po.map()
            .container(d3.select("#map").append("svg").node())
            .zoom(4)
            .add(po.interact());
        // Add the CloudMade image tiles as a base layer…
        map.add(po.image()
            .url(po.url("http://{S}tile.cloudmade.com"
            + "/1a1b06b230af4efdbb989ea99e9841af" // http://cloudmade.com/register
            + "/998/256/{Z}/{X}/{Y}.png")
            .hosts(["a.", "b.", "c.", ""])));
        // Add the compass control on top.
        map.add(po.compass()
            .pan("none"));
        // Add the custom locations/acres
        d3.json("https://www.dropbox.com/s/89adzt973quosda/solaruse.json", function(data){
            // Insert layer beneath the compass.
            var layer = d3.select("#map svg").insert("svg:g", ".compass");
            // Add an svg:g for each Name.
            var marker = layer.selectAll("g")
                .data(d3.entries(data))
                .enter().append("svg:g")
                .attr("transform", transform);
            // Adding the circles
            marker.append("svg:circle")
            //function scraping the acres from the dataset
            .attr()
        });
4

1 回答 1

1

问题

发生这种情况是因为 Dropbox 不允许通过其正常域进行跨源请求。有关跨源请求的更多信息,请参阅MDN CORS 文档。

解决方案

您应该能够使用Dropbox HTTP api(特别是获取文件资源)。或者,如果您想使用 JS 函数而不是 http 请求,可以使用Dropbox JS api 。

或者,正如您在评论中提到的,您可以通过托管自己的 JS 文件来简单地避免使用 Dropbox

于 2018-04-01T02:39:24.590 回答