Ajax - 在发送请求之前检查url是否存在的函数

时间:2014-11-09 01:37:10

标签: javascript jquery ajax json

我正在编写一个函数来从网站/服务器获取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()暂停?

谢谢!

1 个答案:

答案 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 );
    }
}