Я хочу загружать внешние изображения на мою страницу асинхронно, используя jQuery, и я попробовал следующее:
$.ajax({
url: "http://somedomain.com/image.jpg",
timeout:5000,
success: function() {
},
error: function(r,x) {
}
});
Но это всегда возвращает ошибку, возможно ли загрузить изображение вот так?
Я пытался использовать .load
метод, и он работает, но я понятия не имею, как я могу установить время ожидания, если изображение недоступно (404). Как я могу это сделать?
javascript
jquery
ajax
image
jquery-load
Arief
источник
источник
Ответы:
Нет необходимости в AJAX. Вы можете создать новый элемент изображения, установить его атрибут источника и поместить его где-нибудь в документе после завершения загрузки:
источник
paint
илиlayout
операции и, конечно же, задерживая любыеonload
зависимости событий.ЕСЛИ ДЕЙСТВИТЕЛЬНО ВАМ НУЖНО ИСПОЛЬЗОВАТЬ AJAX ...
Я натолкнулся на случаи, когда обработчики загрузки не были подходящим выбором. В моем случае при печати через javascript. Таким образом, для этого есть два варианта использования стиля AJAX:
Решение 1
Используйте данные изображения Base64 и сервис изображений REST. Если у вас есть собственный веб-сервис, вы можете добавить сценарий REST JSP / PHP, который предлагает изображения в кодировке Base64. Теперь, как это полезно? Я наткнулся на новый классный синтаксис для кодирования изображений:
Таким образом, вы можете загрузить данные Image Base64 с помощью Ajax, а затем по завершении вы создадите строку данных Base64 для изображения! Безудержное веселье :). Я рекомендую использовать этот сайт http://www.freeformatter.com/base64-encoder.html для кодирования изображений.
Solution2:
Обманите браузер, чтобы использовать его кеш. Это дает вам хороший fadeIn (), когда ресурс находится в кэше браузера:
Однако оба метода имеют свои недостатки: первый работает только в современных браузерах. Второй имеет проблемы с производительностью и полагается на предположение, как будет использоваться кеш.
ура, будет
источник
Используя jQuery, вы можете просто изменить атрибут «src» на «data-src». Изображение не будет загружено. Но местоположение хранится с тегом. Который я хотел.
Простой фрагмент jQuery копирует data-src в src, который начнет загружать изображение, когда вам это нужно. В моем случае, когда страница закончила загрузку.
Бьюсь об заклад, код jQuery может быть сокращен, но это понятно.
источник
data-
тег, это справедливый немного легче получить доступ к ним через$(element).data('src')
вместо$(element).attr('data-src')
Должно быть лучше, чем ajax, потому что, если это галерея, и вы просматриваете список фотографий, если изображение уже находится в кеше, оно не будет отправлять другой запрос на сервер. Он будет запрашивать в случае jQuery / ajax и возвращать HTTP 304 (не изменен), а затем использовать исходное изображение из кэша, если оно уже там. Вышеуказанный метод уменьшает пустой запрос к серверу после первого цикла изображений в галерее.
источник
Вы можете использовать отложенные объекты для загрузки ASYNC.
Пожалуйста, обратите внимание: image.onload должен быть перед image.src, чтобы предотвратить проблемы с кешем.
источник
Если вы просто хотите установить источник изображения, вы можете использовать это.
источник
Это тоже работает ..
источник
AFAIK, вам нужно было бы сделать здесь функцию .load (), в отличие от .ajax (), но вы могли бы использовать jQuery setTimeout, чтобы сохранить его в рабочем состоянии (ish)
источник
используйте .load для загрузки вашего изображения. Чтобы проверить, если вы получаете ошибку (скажем, 404), вы можете сделать следующее:
осторожно - событие .error () не сработает, когда атрибут src для изображения пуст.
источник
$ (function () {
источник