本文介绍了javascript检查文件是否存在的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码使用D3.js加载json数据:

i have the following code which uses D3.js to load json data:

this.clickCountry = function(d) {
    "use strict"
    var time_for_remove = 500,
        time_for_zoom = 900
    d3.selectAll("svg g").transition().delay(time_for_remove + time_for_zoom - 200).remove()
    self.svg.append("g")
        .attr("id", "country")
    self.regionsGroup = self.svg.select("#country")
    var adm1_key = d.id+"_adm1"
    try {
        var adm1_path = "../topo/"+d.id+"_adm1.json"
    } catch (e) {
        console.log(e)    // "MyError"
    }
    var adm1_path = "../topo/"+d.id+"_adm1.json"
    d3.json(adm1_path, function(error, topology) {
        var regions = topology.objects
        for(var adm1_key in regions) {
            var o = regions[adm1_key]
        }
        self.regionsGroup.selectAll("path")
        .data(topojson.object(topology, o).geometries)
        .enter().append("path")
        .attr("d", self.projection)
        .attr("id", function(d) {
            return d.properties.name
        })
        .classed("country", true)
        .attr("class", "country")
        .on("mouseover", function(d) {
            d3.select(this)
            .style("fill", "#6C0")
            .append("svg:title")
            .text(d.properties.name)
        })
        .on("mouseout", function(d) {
            d3.select(this)
            .style("fill", "#000000")
        })
        .on("click", function(d) {
            console.log('clicked on country')
            var p = d3.mouse(this)
            console.log(p+" "+self.map.invert(p))
            self.map.center(self.map.invert(p))
        })
    })
}

检查文件是否存在的正确方法 adm1_path =../topo /

what is the correct way to check if the file exists adm1_path = "../topo/"+d.id+"_adm1.json" before actually drawing the map?

推荐答案

您实际上是在绘制地图之前/ / d + d.id +_ adm1.json可以包括这样的函数:

You can include a function like this:

function fileExists(url)
{
    var http = new XMLHttpRequest();
    http.open('HEAD', url, false);
    http.send();
    return http.status!=404;
}

然后修改您的代码:

var adm1_path = "../topo/"+d.id+"_adm1.json"
if (!fileExists(adm1_path)) {
    alert('We couldn't find that country!') //or some other suitable error/display mechanism
    return;
}

d3.json(adm1_path, function(error, topology) {

这篇关于javascript检查文件是否存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-15 17:05