我正在编写一个函数来从网站/服务器获取json文件,并使用以下代码将其保存在本地存储中:
function donators() {
var jsonURL = "http://mywebsite.com/donators.json";
var xhr = new XMLHttpRequest();
xhr.open("GET", jsonURL, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
localDataStore.set("fb_donators", xhr.responseText);
}
};
xhr.send();
}
当可以访问json文件时,上面的代码完全正常,但是如果我的服务器出现故障并且无法访问文件,我的脚本会在xhr.send()的行中停止并显示错误:
GET http://mywebsite.com/donators.json net::ERR_NAME_NOT_RESOLVED
有没有办法可以检测是否可以在发送请求之前检查url是否停止发送请求并允许我的其余脚本继续运行而不是在xhr.send()暂停?
谢谢!
答案 0 :(得分:3)
您可以使用try
块。它仍然需要HTTP请求,但它会正常失败,您可以按照自己喜欢的方式处理错误。
function donators() {
var jsonURL = "http://mywebsite.com/donators.json";
var xhr = new XMLHttpRequest();
xhr.open("GET", jsonURL, true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
localDataStore.set("fb_donators", xhr.responseText);
}
};
try { xhr.send(); } catch( err ) {
alert( 'Error getting data: ' + err.message );
}
}