我正在编写一个从网站/服务器获取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()处停止?
谢谢!
最佳答案
您可以为此使用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 );
}
}