Подтвердить что ты не робот

JQuery: проверьте, существует ли изображение

Я загружаю путь изображения через jQuery $.ajax и перед показом изображения, которое я хотел бы проверить, действительно ли оно существует. Можно ли использовать событие загрузки/записи изображения или что-то подобное, чтобы определить, что путь к файлу действителен?

Имея .myimage для отображения: none, я надеюсь сделать что-то вроде

$(".myimage").attr("src", imagePath);
$(".myimage").load(function() {
    $(this).show();
});

Возможно ли подобное?

4b9b3361

Ответ 1

Ну, вы можете привязать .error() обработчик...

как это,

$(".myimage").error(function(){
  $(this).hide();
});

ну, у вас все в порядке уже с load-event

$(".myimage").load(function() {
    $(this).show();
});

проблема с этим заключается в том, что если Javascript отключен, изображение никогда не появится...

Ответ 2

Try:

function urlExists(testUrl) {
 var http = jQuery.ajax({
    type:"HEAD",
    url: testUrl,
    async: false
  })
  return http.status;
      // this will return 200 on success, and 0 or negative value on error
}

затем используйте

if(urlExists('urlToImgOrAnything') == 200) {
    // success
}
else {
    // error
}

Ответ 3

Старый поток, который я знаю, но я думаю, что он может быть улучшен. Я заметил, что ОР имеет прерывистые проблемы, которые могут быть связаны с загрузкой изображения и проверкой ошибок одновременно. Было бы лучше сначала загрузить изображение, а затем проверить наличие ошибок:

$(".myimage").attr("src", imagePath).error(function() {
    // do something
});

Ответ 4

Поскольку вы уже выполняете запрос AJAX, я бы разгрузил его на серверное приложение, поддерживающее ваш AJAX. Тривиально проверять, существует ли файл с сервера, и вы можете установить переменные в данных, которые вы отправляете обратно, чтобы указать результаты.

Ответ 5

Этот вопрос пару лет, но вот лучший пример использования обработчика ошибок для тех, кто смотрит на это.

$("img")
  .error(function(){
    $(this).hide();
  })
  .attr("src", "image.png");

Вам необходимо прикрепить обработчик ошибок, прежде чем пытаться загрузить изображение, чтобы поймать событие.

Источник: http://api.jquery.com/error/

Ответ 6

Вот что я сделал:

$.get( 'url/image', function(res){ 
    //Sometimes has a redirect to not found url
    //Or just detect first the content result and get the a keyword for 'indexof'
    if ( res.indexOf( 'DOCTYPE' ) !== -1 )  {
        //not exists
    } else {
        //exists
    }
});