0

我正在尝试编写此处显示的 XMLHttpRequest 演示脚本的简化版本:

http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

我只会在 iPad 上使用它,所以我不必检查旧版本的 IE 等等。单击按钮时,我想检查连接是否存在。这是我的整个 html 页面,包括 JavaScript 片段:

<html>
<head>
<script>
var myURL = "http://www.google.com";

function testConnection(url) {
    var xmlhttp;

    xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            alert("Connected!");
        } else {
            alert("Not connected!");
        }
    }
    xmlhttp.open("GET", url, true);
    xmlhttp.send();
}
</script>
</head>
<body>


<button type="button" onclick="testConnection(myURL)">Test Connection</button>

</body>
</html>

出于某种奇怪的原因,即使我在线,当我单击按钮时,我也会收到重复的“未连接”警报,但过了一会儿我才收到“已连接”警报,然后没有警报。

看起来我搞砸了,但我看不到在哪里。我应该改变什么才能让它工作?

4

1 回答 1

2

如果您可以使用xhr2,您可以从本教程中学习一些东西并将您的代码重写为如下内容:

function testConnection(url) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onload = function() { alert("Connected!"); }
    xmlhttp.onerror = function() { alert("Not Connected"); }
    xmlhttp.open("GET",url,true);
    xmlhttp.send();
}

如果您将请求发送到另一个域,即使它存在,如果目标服务器具有 Same-Domain-Policy 限制(默认),您也可能会出错。如果目标服务器在另一个域上,它必须发送标头

Access-Control-Allow-Origin: *
于 2013-06-27T16:00:44.520 回答