javascript检查文件是否存在
我有以下使用D3.js加载json数据的代码:javascript检查文件是否存在,javascript,d3.js,Javascript,D3.js,我有以下使用D3.js加载json数据的代码: 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"
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))
})
})
}
在实际绘制地图之前,检查文件是否存在的正确方法是什么
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) {
您可以包含如下函数:
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) {
XHR和
onerror
可能?是的,检查404错误代码…XHR和onerror
可能?是的,检查404错误代码。。。