Как мне справиться со сценарием, когда я делаю синхронный запрос к серверу с помощью XMLHttpRequest, а сервер недоступен?
xmlhttp.open("POST","Page.aspx",false);
xmlhttp.send(null);
Прямо сейчас этот сценарий приводит к ошибке JavaScript: «Система не может найти указанный ресурс»



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуйте свойство тайм-аута.
xmlHTTP.TimeOut= 2000
Я думаю, это будет работать только для асинхронных запросов, в случае синхронных запросов. xmllhttprequest.send заблокирует. Нам придется использовать try..catch, как указано ниже:
Хорошо, я решил это, используя try ... catch around xmlhttprequest.send
:
xmlhttp.open("POST","Page.aspx",false);
try
{
xmlhttp.send(null);
}
catch(e)
{
alert('there was a problem communicating with the server');
}
Вы не проверяете правильность возврата статуса. По указанному вами коду вы выполняете запрос GET. Чтобы правильно проверить статус вашего запроса, вы должны создать обработчик событий для события onreadystatechange, а затем внутри него проверить, равно ли свойство readyState 4, а затем внутри метода, если статус равен 200.
Вы можете найти подробное объяснение здесь: Учебное пособие по Ajax от Mozilla
xmlhttp.onreadystatechange=function()
xmlhttp.open("GET","Page.aspx",false);
{
if (xmlhttp.readyState==4)
{
if (xmlhttp.status==200)
{
//Ajax handling logic
}
}
}
xmlhttp.send(null);