XMLHttpRequest错误检查 - 更好的写入方式?

时间:2012-10-14 09:36:42

标签: javascript xmlhttprequest try-catch

我写了一个从桌面运行的网页,用于从公共网站上获取信息。我试图使其到达1)如果没有互联网连接有警报2)如果有互联网连接,但不知何故信息未被正确检索,用户将收到警报。

如果没有互联网连接,try和catch适用于测试。

我正在使用xml.status代码进行第二次测试...如果网站处于活动状态但拉出的信息搞砸了....测试条件不按照我想要的方式工作。我试图给xml.open一个虚假的网站,并期待一个非200-300状态代码。但它没有用......而是激活了catch语句。为什么是这样?还有更好的方法来写这个吗?

另外,在旁注上我回来了“”;因为我使用它的调用变量不能为null或undefined:variable = getInfo(); n.setAttribute(“占位符”,变量);

function getInfo() {
        var xml = null;
        xml = new XMLHttpRequest(); 
        try {
            xml.open("get", "http://example.asp", false);
            xml.send(null);
            if ((xml.status >= 200 && xml.status <= 300) || xml.status == 304) {
                var hi = xml.responseText;
                hi = hi.replace(/(\r\n|\n|\r)/gm, "");
                var what1 = /winning_number_sm.*?ul/
                    var what2 = /\d+/g

                    hi = what1.exec(hi);
                var temp;
                for (i = 0; i < 6; i++) {
                    if (null !== (temp = what2.exec(hi))) {
                        numbers[i] = temp;
                    }
                }
                return numbers;
            } else {
                alert("Error Connecting to Website! You will have to eneter informatin by hand");
                return "";
            }
        } catch (e) {
            alert("No Internet Connection! You will have to enter information by hand");
            return "";
        }

}

2 个答案:

答案 0 :(得分:0)

我不知道你是否可以使用jQuery框架但是从ajax连接中获取错误(测试一个网站是否已启动)你可以轻松地做到:

//your ajax object
var request = $.ajax({
  url: "http://www.exemple.com/script.php",
  type: "POST",
  data: {/*your datas*/},
  dataType: "html"
});

request.done(function(msg) {
  //make your stuff automatically
});

request.fail(function(jqXHR, textStatus) {
  alert( "Error Connecting to Website! You will have to enter informatin by hand");
});

答案 1 :(得分:0)

其他方法可以调用本地php脚本,其测试远程url具有curl函数(例如:http://www.php.net/manual/en/function.curl-error.php