Saya ingin memuat gambar eksternal pada halaman saya secara tidak sinkron menggunakan jQuery dan saya telah mencoba yang berikut ini:
$.ajax({
url: "http://somedomain.com/image.jpg",
timeout:5000,
success: function() {
},
error: function(r,x) {
}
});
Tetapi selalu mengembalikan kesalahan, apakah mungkin memuat gambar seperti ini?
Saya mencoba menggunakan .load
metode dan berfungsi tetapi saya tidak tahu bagaimana saya dapat mengatur batas waktu jika gambar tidak tersedia (404). Bagaimana saya bisa melakukan ini?
javascript
jquery
ajax
image
jquery-load
Arief
sumber
sumber
Jawaban:
Tidak perlu untuk ajax. Anda dapat membuat elemen gambar baru, mengatur atribut sumbernya dan menempatkannya di suatu tempat di dokumen setelah selesai memuat:
sumber
paint
atau tertentulayout
, dan tentu saja menunda setiaponload
dependensi acara.JIKA ANDA SANGAT PERLU MENGGUNAKAN AJAX ...
Saya mendatangi kami di mana handler yang menangani bukan pilihan yang tepat. Dalam kasus saya saat mencetak melalui javascript. Jadi sebenarnya ada dua opsi untuk menggunakan gaya AJAX untuk ini:
Solusi 1
Gunakan data gambar Base64 dan layanan gambar REST. Jika Anda memiliki layanan web Anda sendiri, Anda bisa menambahkan skrip JSP / PHP REST yang menawarkan gambar dalam penyandian Base64. Sekarang bagaimana itu berguna? Saya menemukan sintaks baru yang keren untuk penyandian gambar:
Jadi, Anda dapat memuat data Image Base64 menggunakan Ajax dan setelah selesai Anda membangun string data Base64 ke gambar! Sangat menyenangkan :). Saya merekomendasikan untuk menggunakan situs ini http://www.freeformatter.com/base64-encoder.html untuk penyandian gambar.
Solusi2:
Trik browser untuk menggunakan cache-nya. Ini memberi Anda fadeIn () yang bagus ketika sumber daya ada di cache browser:
Namun, kedua metode ini memiliki kelemahan: Yang pertama hanya berfungsi di browser modern. Yang kedua memiliki gangguan kinerja dan bergantung pada asumsi bagaimana cache akan digunakan.
bersorak, akan
sumber
Menggunakan jQuery, Anda cukup mengubah atribut "src" menjadi "data-src". Gambar tidak akan dimuat. Tetapi lokasi disimpan dengan tag. Yang saya suka.
Sepotong jQuery sederhana menyalin data-src ke src, yang akan mulai memuat gambar saat Anda membutuhkannya. Dalam kasus saya ketika halaman selesai memuat.
Saya yakin kode jQuery bisa disingkat, tetapi bisa dimengerti dengan cara ini.
sumber
data-
tag, lebih mudah untuk mengaksesnya melalui tag$(element).data('src')
daripada$(element).attr('data-src')
Seharusnya lebih baik daripada ajax karena jika ini adalah galeri dan Anda mengulang daftar foto, jika gambar sudah dalam cache, itu tidak akan mengirim permintaan lain ke server. Ini akan meminta dalam kasus jQuery / ajax dan mengembalikan HTTP 304 (Tidak dimodifikasi) dan kemudian menggunakan gambar asli dari cache jika sudah ada di sana. Metode di atas mengurangi permintaan kosong ke server setelah loop pertama gambar di galeri.
sumber
Anda dapat menggunakan objek Ditangguhkan untuk memuat ASYNC.
Harap perhatikan: image.onload harus ada sebelum image.src untuk mencegah masalah dengan cache.
sumber
Jika Anda hanya ingin mengatur sumber gambar, Anda dapat menggunakan ini.
sumber
Ini juga berfungsi ..
sumber
AFAIK Anda harus melakukan fungsi .load () di sini sesuai dengan .ajax (), tetapi Anda bisa menggunakan jQuery setTimeout untuk membuatnya tetap hidup (ish)
sumber
gunakan .load untuk memuat gambar Anda. untuk menguji jika Anda mendapatkan kesalahan (misalkan 404) Anda dapat melakukan hal berikut:
cermat - .error () acara tidak akan memicu ketika atribut src kosong untuk gambar.
sumber
$ (function () {
sumber