Как проверить, существует ли файл в JavaScript? - PullRequest
3 голосов
/ 13 октября 2008

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

$ ( "# Main"). Нагрузка ( "login.html")

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

Ответы [ 2 ]

12 голосов
/ 13 октября 2008

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

Подробнее в документации http://docs.jquery.com/Ajax/ajaxComplete#callback

Тест здесь http://pastebin.me/48f32a74927bb

1009 * например *

$("#someDivId").ajaxComplete(function(request, settings){
    if (settings.status===404){
        //redirect here
    }
});
1 голос
/ 14 октября 2008

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

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

http://jsbin.com/iwume

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

...