Использование XMLHttpResponse в асинхронном. Поскольку асинхронные ответы не могут быть получены в том порядке, в котором они запрошены, и поскольку вы можете проверять несколько файлов, может быть хорошей идеей проверить свойство responseURL
, прежде чем действовать в случае, когда файл не существует (не является найден или возвращает ошибку, и т.д.)
jsFiddle пример: http://jsfiddle.net/5f42L6nz/4/
Источник: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests
function UrlExists(url) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true); // true => async request
xhr.onload = function (e) {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
// URL found, do stuff for "exists"
alert("url exists:\r\n" + xhr.responseURL);
} else {
// URL not found, could check xhr.status === 404, etc.
// do stuff when URL not found, but no exception/error thrown
alert("not found or unexpected response:\r\n" + xhr.responseURL);
}
}
};
xhr.onerror = function (e) {
console.error(xhr.statusText);
};
xhr.send(null);
}
var url = '/'; // just an example, get web app root
UrlExists(url);
UrlExists("/badurl");
Вам нужно сделать синхронный вызов, так что он останавливается и ждет. Вам не нужно знать, является ли это функцией 'UrlExists()' (которую я не верю, что вы можете получить). Это означает, что это должно быть 'http.open ('HEAD', url, false)'. –
Я действительно ищу использовать асинхронный вызов, вы можете помочь с ним? – Louis
Третий аргумент для 'http.open()' is 'async: true', поэтому передайте false, и он будет синхронным. У меня есть это в конце моего последнего комментария. ';)' –