本文介绍了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检查文件是否存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!