En Prototype puedo mostrar una imagen de "cargando ..." con este código:
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onLoading: showLoad, onComplete: showResponse} );
function showLoad () {
...
}
En jQuery , puedo cargar una página de servidor en un elemento con esto:
$('#message').load('index.php?pg=ajaxFlashcard');
pero, ¿cómo adjunto una flecha de carga a este comando como lo hice en Prototype?
jquery
spinner
prototypejs
equivalence
language-interoperability
Edward Tanguay
fuente
fuente
Para jQuery utilizo
fuente
beforeSend
se llama antes de cada llamada, mientras queajaxStart
se dispara solo cuando se llama al primer método ajax. Del mismo modoajaxStop
, se llama cuando finaliza la última llamada ajax. Si tiene más de una solicitud simultánea, el fragmento de esta respuesta no funcionará correctamente.Simplemente puede usar la
.ajax
función jQuery y usar su opciónbeforeSend
y definir alguna función en la que pueda mostrar algo como un cargador de div y, en la opción de éxito, puede ocultar ese cargador de div.Puedes tener cualquier imagen Spinning Gif. Aquí hay un sitio web que es un gran generador de cargadores AJAX de acuerdo con su esquema de color: http://ajaxload.info/
fuente
success
no se llamará si hay un error, pero "siempre recibirá unacomplete
devolución de llamada, incluso para las solicitudes sincrónicas", de acuerdo con jQuery Ajax Eventos .Puede insertar la imagen animada en el DOM justo antes de la llamada AJAX, y hacer una función en línea para eliminarla ...
Esto asegurará que su animación comience en el mismo marco en solicitudes posteriores (si eso es importante). Tenga en cuenta que las versiones antiguas de IE pueden tener dificultades con la animación.
¡Buena suerte!
fuente
http://docs.jquery.com/Ajax/load#urldatacallback
fuente
Si está usando
$.ajax()
, puede usar algo como esto:fuente
Use el complemento de carga: http://plugins.jquery.com/project/loading
fuente
Variante: tengo un icono con id = "logo" en la parte superior izquierda de la página principal; un gif giratorio se superpone en la parte superior (con transparencia) cuando ajax está funcionando.
fuente
Terminé con dos cambios en la respuesta original .
document
. Esto hace que sea más difícil filtrar solo algunas de las solicitudes de ajax. Soo ...Este es el código después de estos cambios:
fuente
ajaxComplete
parece dispararse prematuramente cuando las solicitudes se vuelven a intentar, por lo que he usado una combinación deajaxSend
yajaxStop
funciona muy bien.También quiero contribuir a esta respuesta. Estaba buscando algo similar en jQuery y esto es lo que finalmente terminé usando.
Obtuve mi spinner de carga de http://ajaxload.info/ . Mi solución se basa en esta respuesta simple en http://christierney.com/2011/03/23/global-ajax-loading-spinners/ .
Básicamente, su marcado HTML y CSS se verían así:
Y luego codificas para jQuery se vería así:
Es tan simple como eso :)
fuente
Simplemente puede asignar una imagen de cargador a la misma etiqueta en la que luego cargará contenido mediante una llamada Ajax:
También puede reemplazar la etiqueta span con una etiqueta de imagen.
fuente
Además de establecer valores predeterminados globales para eventos ajax, puede establecer el comportamiento de elementos específicos. ¿Tal vez solo cambiar su clase sería suficiente?
Ejemplo de CSS, para ocultar #myForm con una ruleta:
fuente
Tenga en cuenta que debe usar llamadas asíncronas para que funcionen los hilanderos (al menos eso es lo que provocó que el mío no se mostrara hasta después de la llamada ajax y luego desapareció rápidamente cuando la llamada había terminado y quitó el hilandero).
fuente
fuente
He usado lo siguiente con jQuery UI Dialog. (¿Tal vez funciona con otras devoluciones de llamada ajax?)
Contiene un gif animado de carga hasta que su contenido se reemplaza cuando se completa la llamada ajax.
fuente
Esta es la mejor manera para mí:
jQuery :
Café :
Documentos: ajaxStart , ajaxStop
fuente
JavaScript
CSS
fuente
Este es un complemento muy simple e inteligente para ese propósito específico: https://github.com/hekigan/is-loading
fuente
Hago esto:
fuente
Creo que tienes razón. Este método es demasiado global ...
Sin embargo, es un buen valor predeterminado para cuando su llamada AJAX no tiene ningún efecto en la página en sí. (guardar en segundo plano, por ejemplo). (siempre puede desactivarlo para una determinada llamada ajax pasando "global": falso - consulte la documentación en jquery
Cuando la llamada AJAX está destinada a actualizar parte de la página, me gusta que mis imágenes de "carga" sean específicas de la sección actualizada. Me gustaría ver qué parte se actualiza.
Imagina lo genial que sería si pudieras simplemente escribir algo como:
Y esto mostraría una "carga" en esta sección. A continuación se muestra una función que escribí que también maneja la visualización de "carga", pero es específica del área que está actualizando en ajax.
Primero, déjame mostrarte cómo usarlo
Y esta es la función: un comienzo básico que puede mejorar como desee. Es muy flexible.
fuente
Si no desea escribir su propio código, también hay muchos complementos que hacen exactamente eso:
fuente
Si planea usar un cargador cada vez que realiza una solicitud de servidor, puede usar el siguiente patrón.
Este código en particular usa el complemento jajaxloader (que acabo de crear)
https://github.com/lingtalfi/JAjaxLoader/
fuente
Mi código ajax se ve así, en efecto, acabo de comentar async: línea falsa y aparece el spinner.
Estoy mostrando el spinner dentro de una función antes del código ajax:
Para Html, he usado una clase de fuente impresionante:
<i id="ajaxspinner" class="fas fa-spinner fa-spin fa-3x fa-fw" style="display:none"></i>
Espero que ayude a alguien.
fuente
Siempre puede usar el complemento jQuery Block UI que hace todo por usted e incluso bloquea la página de cualquier entrada mientras se carga el ajax. En caso de que el complemento no funcione, puede leer sobre la forma correcta de usarlo en esta respuesta. Echale un vistazo.
fuente