Загрузка изображения Javascript: получить статус ошибки - PullRequest
1 голос
/ 11 марта 2010

Я загружаю изображение через JavaScript:

myimage.src = "/mycontroller/mymethod";
myimage.alt = "image";
myimage.onload = function(){
    $('body').append(myimage);
};    

Но иногда мой метод контроллера должен возвращать ошибку со статусом http 500. Таким образом, тип контента больше не будет image/png. Будет текст.
Есть способ идентифицировать эту ошибку при загрузке изображения, получить сообщение об ошибке и отобразить предупреждение?

Ответы [ 2 ]

1 голос
/ 21 июня 2013

Что вы можете сделать, это использовать событие onError для изображения, чтобы сообщить вам, существует ли допустимый файл изображения.

Например:

Допустим, у вас есть каталог с 5 файлами изображений: img1.jpg, img2.jpg, img3.jpg, img4.jpg и img5.jpg.

Это код вашей веб-страницы, который изменяет изображение, отображаемое при каждом нажатии на изображение:

[HTML]

<img id="image" onClick="changeImage();" onError="error();" src="img1.jpg" />

[JavaScript]

var number = 1;
function changeImage() 
{
number++;
document.getElementById("image").src = "img" + number + ".jpg";
}

function error()
{
alert("This image does not exist");
}

С этой настройкой, когда вы нажимаете на изображение в пятый раз, запускается событие onError тега изображения, и вы вызываете функцию, которая отображает сообщение об ошибке. Сообщаем вам, что файл img6.jpg не существует. Теперь, есть способы, которыми вы можете манипулировать этим событием для изучения локальных каталогов, но оно ограничено в некоторых отношениях. Было бы гораздо полезнее, если бы это был фактический атрибут с присвоенным ему значением true / false, чтобы его можно было использовать в качестве условия тестирования.

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

Надеюсь, этот ответ поможет людям, которые читают этот вопрос в будущем, так как мой ответ опоздал на год ...

1 голос
/ 11 марта 2010

Если метод не гарантированно будет успешным, лучшим способом будет возврат метода для кода Javascript, который либо загружает изображение, либо отображает ошибку Насколько я знаю, нет никакого способа узнать, является ли URL-адрес изображения фактически изображением или это текстовые данные. Я был бы рад, если бы кто-то еще дал ответ, который доказал бы мою неправоту!

...