Dalam Prototipe saya dapat menampilkan gambar "memuat ..." dengan kode ini:
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onLoading: showLoad, onComplete: showResponse} );
function showLoad () {
...
}
Di jQuery , saya bisa memuat halaman server ke dalam elemen dengan ini:
$('#message').load('index.php?pg=ajaxFlashcard');
tetapi bagaimana cara melampirkan pemintal pemuatan ke perintah ini seperti yang saya lakukan pada Prototipe?
jquery
spinner
prototypejs
equivalence
language-interoperability
Edward Tanguay
sumber
sumber
Untuk jQuery saya gunakan
sumber
beforeSend
dipanggil sebelum setiap panggilan, sedangkanajaxStart
dipicu hanya ketika metode ajax pertama dipanggil. Demikian juga untukajaxStop
, itu dipanggil ketika panggilan ajax terakhir selesai. Jika Anda memiliki lebih dari satu permintaan bersamaan, snippet dalam jawaban ini tidak akan berfungsi dengan baik.Anda bisa menggunakan fungsi jQuery
.ajax
dan menggunakan opsibeforeSend
dan mendefinisikan beberapa fungsi di mana Anda dapat menampilkan sesuatu seperti loader loader dan pada opsi sukses Anda dapat menyembunyikan div loader tersebut.Anda dapat memiliki gambar Gif Berputar. Berikut adalah situs web yang merupakan Generator Loader AJAX yang hebat sesuai dengan skema warna Anda: http://ajaxload.info/
sumber
success
akan dipanggil jika ada kesalahan, tetapi "Anda akan selalu menerimacomplete
panggilan balik, bahkan untuk permintaan sinkron," menurut jQuery Ajax Events .Anda dapat memasukkan gambar animasi ke dalam DOM tepat sebelum panggilan AJAX, dan melakukan fungsi sebaris untuk menghapusnya ...
Ini akan memastikan animasi Anda dimulai pada frame yang sama pada permintaan berikutnya (jika itu penting). Perhatikan bahwa versi lama IE mungkin mengalami kesulitan dengan animasi.
Semoga berhasil!
sumber
http://docs.jquery.com/Ajax/load#urldatacallback
sumber
Jika Anda menggunakan,
$.ajax()
Anda dapat menggunakan sesuatu seperti ini:sumber
Gunakan plugin pemuatan: http://plugins.jquery.com/project/loading
sumber
Varian: Saya memiliki ikon dengan id = "logo" di kiri atas halaman utama; spinner gif kemudian dilapis di atas (dengan transparansi) saat ajax bekerja.
sumber
Saya berakhir dengan dua perubahan pada balasan asli .
document
. Ini membuat lebih sulit untuk memfilter hanya beberapa permintaan ajax. Soo ...Ini adalah kode setelah perubahan ini:
sumber
ajaxComplete
tampaknya menyala sebelum waktunya ketika permintaan coba lagi, jadi saya telah menggunakan kombinasiajaxSend
danajaxStop
dan itu berfungsi dengan baik.Saya juga ingin berkontribusi untuk jawaban ini. Saya sedang mencari sesuatu yang serupa di jQuery dan ini yang akhirnya saya gunakan.
Saya mendapatkan pemintal pemuatan dari http://ajaxload.info/ . Solusi saya didasarkan pada jawaban sederhana ini di http://christierney.com/2011/03/23/global-ajax-loading-spinners/ .
Pada dasarnya markup dan CSS HTML Anda akan terlihat seperti ini:
Dan kemudian Anda kode untuk jQuery akan terlihat seperti ini:
Sesederhana itu :)
sumber
Anda cukup menetapkan gambar pemuat ke tag yang sama di mana Anda nanti akan memuat konten menggunakan panggilan Ajax:
Anda juga dapat mengganti tag rentang dengan tag gambar.
sumber
Selain mengatur standar global untuk acara ajax, Anda dapat mengatur perilaku untuk elemen tertentu. Mungkin mengubah kelas saja sudah cukup?
Contoh CSS, untuk menyembunyikan #myForm dengan pemintal:
sumber
Perhatikan bahwa Anda harus menggunakan panggilan asinkron agar pemintal bekerja (setidaknya itulah yang menyebabkan tambang tidak muncul hingga setelah panggilan ajax dan kemudian dengan cepat pergi setelah panggilan selesai dan melepas pemintal).
sumber
sumber
Saya telah menggunakan yang berikut dengan Dialog UI jQuery. (Mungkin bekerja dengan panggilan balik ajax lainnya?)
Ini berisi gif pemuatan animasi sampai isinya diganti ketika panggilan ajax selesai.
sumber
Ini cara terbaik bagi saya:
jQuery :
Kopi :
Documents: ajaxStart , ajaxStop
sumber
JavaScript
CSS
sumber
Ini adalah plugin yang sangat sederhana dan cerdas untuk tujuan khusus itu: https://github.com/hekigan/is-loading
sumber
Saya melakukan ini:
sumber
Saya pikir kamu benar. Metode ini terlalu global ...
Namun - ini adalah standar yang baik untuk saat panggilan AJAX Anda tidak berpengaruh pada halaman itu sendiri. (save latar misalnya). (Anda selalu dapat mematikannya untuk panggilan ajax tertentu dengan mengirimkan "global": false - lihat dokumentasi di jquery
Ketika panggilan AJAX dimaksudkan untuk menyegarkan bagian dari halaman, saya suka gambar "memuat" saya untuk spesifik ke bagian yang di-refresh. Saya ingin melihat bagian mana yang disegarkan.
Bayangkan betapa kerennya jika Anda bisa menulis sesuatu seperti:
Dan ini akan menunjukkan "memuat" pada bagian ini. Di bawah ini adalah fungsi yang saya tulis yang menangani tampilan "memuat" juga tetapi khusus untuk area yang Anda refresh di ajax.
Pertama, izinkan saya menunjukkan kepada Anda bagaimana menggunakannya
Dan ini adalah fungsinya - awal dasar yang dapat Anda tingkatkan sesuai keinginan. ini sangat fleksibel.
sumber
Jika Anda tidak ingin menulis kode Anda sendiri, ada juga banyak plugin yang melakukan hal itu:
sumber
Jika Anda berencana untuk menggunakan loader setiap kali Anda membuat permintaan server, Anda dapat menggunakan pola berikut.
Kode ini khususnya menggunakan plugin jajaxloader (yang baru saja saya buat)
https://github.com/lingtalfi/JAjaxLoader/
sumber
Kode ajax saya terlihat seperti ini, pada dasarnya, saya baru saja berkomentar async: baris palsu dan pemintal muncul.
Saya menunjukkan pemintal dalam suatu fungsi sebelum kode ajax:
Untuk Html, saya telah menggunakan kelas font yang mengagumkan:
<i id="ajaxspinner" class="fas fa-spinner fa-spin fa-3x fa-fw" style="display:none"></i>
Semoga ini bisa membantu seseorang.
sumber
Anda selalu dapat menggunakan plugin Blok UI jQuery yang melakukan segalanya untuk Anda, dan itu bahkan memblokir halaman dari setiap input saat ajax sedang memuat. Jika plugin tampaknya tidak berfungsi, Anda dapat membaca tentang cara yang tepat untuk menggunakannya dalam jawaban ini. Coba lihat.
sumber