2013-06-27 3 views
0

Я пытаюсь написать обтекаемую версию XMLHttpRequest демо-сценария показана здесь: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> 

По какой-то странной причине, даже если я в сети, когда я нажимаю кнопку, я получаю повторен «Не подключен» оповещения, и только через некоторое время я получите предупреждение «Подключено», а затем никаких предупреждений.

Похоже, я испортил, но я не вижу, где. Что я должен изменить, чтобы заставить его работать?

ответ

2

Если вы можете использовать xhr2, вы можете узнать вещи из this tutorial и переписать код, чтобы что-то вроде этого:

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(); 
} 

Если вы посылаете запрос на другой домен, вы можете получить сообщение об ошибке, даже если она существует, если на целевом сервере есть ограничение на одну и ту же область (по умолчанию). Если целевой сервер находится в другом домене, он должен отправить заголовок

Access-Control-Allow-Origin: * 
+0

Большое спасибо, @Jan! –

+0

@Figaro: Я забыл упомянуть о перекрестном домене, см. Мое обновление –

+0

Спасибо, @Jan. Могу ли я попросить вас взглянуть на другой вопрос, основываясь только на вашем ответе на этот вопрос? –