Как проверить, существует ли файл в javascript?

#jquery #file #exists

Вопрос:

Я использую библиотеку jquery для загрузки содержимого html — файла. Что-то вроде этого:

$(«#Основной»).загрузка(«login.html»)

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

Ответ №1:

Вы можете использовать событие ajaxComplete, которое предоставляет вам доступ к объекту xhr, по которому вы можете запросить статус запроса, например, статус 404 будет означать, что файл не существует.

Более подробная информация в документах http://docs.jquery.com/Ajax/ajaxComplete#callback

Проверьте здесь http://pastebin.me/48f32a74927bb

например

 $("#someDivId").ajaxComplete(function(request, settings){
    if (settings.status===404){
        //redirect here
    }
});
 

Ответ №2:

Решение @PConroy работает, но оно делает то же самое для всех неудачных запросов ajax.

Если вам это нужно для каждого запроса — то есть, если первый запрос завершится неудачно, он перейдет на страницу X, а если второй завершится неудачно, то вам нужно сделать это с помощью дескриптора ошибок в функции $.ajax:

http://jsbin.com/iwume

(для редактирования: http://jsbin.com/iwume/edit)

Комментарии:

1. Вы должны показать основы решения здесь, а не требовать, чтобы люди переходили по ссылке. Ссылки хороши для предоставления дополнительной информации, но в самом ответе должно быть достаточно информации.