С помощью jQuery:
$.ajax({
url:'http://www.example.com/somefile.ext',
type:'HEAD',
error: function()
{
//file not exists
},
success: function()
{
//file exists
}
});
РЕДАКТИРОВАТЬ:
Вот код для проверки статуса 404, без использования jQuery
function UrlExists(url)
{
var http = new XMLHttpRequest();
http.open('HEAD', url, false);
http.send();
return http.status!=404;
}
Небольшие изменения, и он может проверить статус HTTP-код состояния 200 (успех), вместо этого.
РЕДАКТИРОВАТЬ 2: Поскольку синхронизация XMLHttpRequest устарела, вы можете добавить вспомогательный метод, подобный этому, чтобы сделать его асинхронным:
function executeIfFileExist(src, callback) {
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function() {
if (this.readyState === this.DONE) {
callback()
}
}
xhr.open('HEAD', src)
}
OnReadyStateChange
связать событие перед проверкой HTTP_STATUS.Подобный и более современный подход.
источник
$.ajax
кажется лучше, если он более обратно совместим, верно?Это работает для меня:
источник
я использовал этот скрипт, чтобы добавить альтернативное изображение
HTML:
http://wap.w3schools.com/jsref/event_onerror.asp
источник
Пока вы тестируете файлы в одном домене, это должно работать:
Обратите внимание, что в этом примере используется запрос GET, который помимо получения заголовков (все, что вам нужно для проверки, существует ли файл), получает весь файл. Если файл достаточно большой, этот метод может занять некоторое время.
Лучший способ сделать это было бы изменить эту строку:
req.open('GET', url, false);
кreq.open('HEAD', url, false);
источник
async: false
синхронная работа в Firefox версии 30.0 и более поздних, а также в последних / текущих версиях Chrome устарела из-за неблагоприятного взаимодействия с пользователем. Попытка использования приводит к ошибке / ошибке. Следует использоватьasync: true
с функцией обратного вызова для асинхронной работы.При попытке получить ответ на этот вопрос я столкнулся с проблемой междоменных разрешений, поэтому я решил:
Кажется, работает отлично, надеюсь, это поможет кому-то!
источник
Вот как это сделать ES7, если вы используете Babel Transpiler или Typescript 2:
Затем внутри другой
async
области вы можете легко проверить, существует ли URL:источник
Я использую этот скрипт, чтобы проверить, существует ли файл (также он обрабатывает проблему перекрестного происхождения):
Обратите внимание, что следующая синтаксическая ошибка выдается, когда проверяемый файл не содержит JSON.
источник
Асинхронный вызов, чтобы увидеть, существует ли файл, является лучшим подходом, потому что он не ухудшает взаимодействие с пользователем, ожидая ответа от сервера. Если вы делаете вызов
.open
с третьим параметром, для которого установлено значение false (как, напримерhttp.open('HEAD', url, false);
, во многих приведенных выше примерах ), это синхронный вызов, и вы получаете предупреждение в консоли браузера.Лучший подход:
источник: https://xhr.spec.whatwg.org/
источник
.open
с третьим параметром,true
чтобы убедиться, что он вызывает его асинхронно, как этоclient.open("HEAD", address, true);
@PierreДля клиентского компьютера это может быть достигнуто путем:
Это моя программа для передачи файла в определенное место и показывает предупреждение, если он не существует
источник
Функция JavaScript, чтобы проверить, существует ли файл:
источник
Сначала создает функцию
После использования функции следующим образом
источник
Это адаптация к принятому ответу, но я не смог получить из ответа то, что мне было нужно, и мне пришлось проверить, что это сработало, так как это было предчувствие, поэтому я предлагаю свое решение здесь.
Нам нужно было проверить, существует ли локальный файл, и разрешить открытие файла (PDF), только если он существует. Если вы опустите URL-адрес веб-сайта, браузер автоматически определит имя хоста, чтобы оно работало на локальном хосте и на сервере:
источник
Что вам нужно сделать, это отправить запрос на сервер, чтобы он сделал проверку, а затем отправить результат обратно к вам.
С каким типом сервера вы пытаетесь установить связь? Возможно, вам придется написать небольшой сервис, чтобы ответить на запрос.
источник
Это не отвечает на вопрос ОП, но для тех, кто возвращает результаты из базы данных: вот простой метод, который я использовал.
Если бы пользователь не загружал аватар,
avatar
поле было бы такимNULL
, поэтому я бы вставил изображение аватара по умолчанию изimg
каталога.затем
источник
Это работает для меня, используйте iframe, чтобы игнорировать браузеры показывают сообщение об ошибке GET
источник
Я хотел функцию, которая возвращала бы логическое значение, я столкнулся с проблемами, связанными с закрытием и асинхронностью. Я решил так:
источник