No Prototype , posso mostrar uma imagem "loading ..." com este código:
var myAjax = new Ajax.Request( url, {method: 'get', parameters: pars,
onLoading: showLoad, onComplete: showResponse} );
function showLoad () {
...
}
No jQuery , eu posso carregar uma página do servidor em um elemento com isso:
$('#message').load('index.php?pg=ajaxFlashcard');
mas como anexar um controle giratório de carregamento a este comando, como fiz no Prototype?
jquery
spinner
prototypejs
equivalence
language-interoperability
Edward Tanguay
fonte
fonte
Para jQuery eu uso
fonte
beforeSend
é chamado antes de cada chamada, enquanto queajaxStart
é acionado apenas quando o primeiro método ajax é chamado. Da mesma formaajaxStop
, é chamado quando a última chamada ajax termina. Se você tiver mais de uma solicitação simultânea, o trecho nesta resposta não funcionará corretamente.Você pode simplesmente usar a
.ajax
função do jQuery e usar sua opçãobeforeSend
e definir alguma função na qual possa mostrar algo como uma div do carregador e, na opção de sucesso, pode ocultar essa div do carregador.Você pode ter qualquer imagem de GIF animado. Aqui está um site que é um ótimo gerador de carregador AJAX de acordo com o seu esquema de cores: http://ajaxload.info/
fonte
success
não será chamado se houver um erro, mas "você sempre receberá umcomplete
retorno de chamada, mesmo para solicitações síncronas", de acordo com o jQuery Ajax Events .Você pode inserir a imagem animada no DOM imediatamente antes da chamada AJAX e executar uma função em linha para removê-la ...
Isso garantirá que sua animação inicie no mesmo quadro em solicitações subsequentes (se isso for importante). Observe que as versões antigas do IE podem ter dificuldades com a animação.
Boa sorte!
fonte
http://docs.jquery.com/Ajax/load#urldatacallback
fonte
Se você estiver usando,
$.ajax()
pode usar algo como isto:fonte
Use o plug-in de carregamento: http://plugins.jquery.com/project/loading
fonte
Variante: Eu tenho um ícone com id = "logo" no canto superior esquerdo da página principal; um gif giratório é então sobreposto (com transparência) quando o ajax está funcionando.
fonte
Acabei com duas alterações na resposta original .
document
. Isso torna mais difícil filtrar apenas algumas das solicitações de ajax. Soo ...Este é o código após estas alterações:
fonte
ajaxComplete
parece disparar prematuramente quando os pedidos de repetição, então eu usei uma combinação deajaxSend
eajaxStop
e ele funciona muito bem.Eu também quero contribuir para esta resposta. Eu estava procurando por algo semelhante no jQuery e isso que acabei usando.
Eu recebi meu spinner de carregamento em http://ajaxload.info/ . Minha solução é baseada nesta resposta simples em http://christierney.com/2011/03/23/global-ajax-loading-spinners/ .
Basicamente, sua marcação HTML e CSS ficariam assim:
E então você codifica para o jQuery seria algo como isto:
É tão simples quanto isso :)
fonte
Você pode simplesmente atribuir uma imagem do carregador à mesma tag na qual posteriormente carregará o conteúdo usando uma chamada Ajax:
Você também pode substituir a tag span por uma tag de imagem.
fonte
Além de definir padrões globais para eventos ajax, você pode definir o comportamento para elementos específicos. Talvez apenas mudar de classe fosse suficiente?
Exemplo de CSS, para ocultar #myForm com um girador:
fonte
Observe que você deve usar chamadas assíncronas para que os giradores funcionem (pelo menos foi o que fez com que o meu não fosse exibido até depois da chamada ajax e depois desapareceu rapidamente quando a chamada terminou e removeu o girador).
fonte
fonte
Eu usei o seguinte com o jQuery UI Dialog. (Talvez funcione com outros retornos de chamada ajax?)
O contém um gif de carregamento animado até que seu conteúdo seja substituído quando a chamada ajax for concluída.
fonte
Esta é a melhor maneira para mim:
jQuery :
Café :
Documentos: ajaxStart , ajaxStop
fonte
Javascript
CSS
fonte
Este é um plugin muito simples e inteligente para esse fim específico: https://github.com/hekigan/is-loading
fonte
Eu faço isso:
fonte
Eu acho que você está certo. Este método é muito global ...
No entanto - é um bom padrão para quando sua chamada AJAX não tiver efeito na própria página. (salvar em segundo plano, por exemplo). (você sempre pode desativá-lo para uma determinada chamada ajax passando "global": false - consulte a documentação em jquery
Quando a chamada AJAX se destina a atualizar parte da página, eu gosto que minhas imagens de "carregamento" sejam específicas da seção atualizada. Gostaria de ver qual parte é atualizada.
Imagine como seria legal se você pudesse escrever algo como:
E isso mostraria um "carregamento" nesta seção. Abaixo está uma função que escrevi que lida com a exibição de "carregamento", mas é específica para a área que você está atualizando no ajax.
Primeiro, deixe-me mostrar como usá-lo
E esta é a função - um começo básico que você pode aprimorar conforme desejar. é muito flexível.
fonte
Se você não quiser escrever seu próprio código, também existem muitos plugins que fazem exatamente isso:
fonte
Se você planeja usar um carregador sempre que fizer uma solicitação do servidor, poderá usar o seguinte padrão.
Este código, em particular, usa o plug-in jajaxloader (que acabei de criar)
https://github.com/lingtalfi/JAjaxLoader/
fonte
Meu código ajax se parece com isso, com efeito, acabei de comentar async: false line e o spinner aparece.
Estou mostrando o botão giratório dentro de uma função antes do código ajax:
Para HTML, usei uma classe incrível de fontes:
<i id="ajaxspinner" class="fas fa-spinner fa-spin fa-3x fa-fw" style="display:none"></i>
Espero que ajude alguém.
fonte
Você sempre pode usar o plugin jQuery da UI do bloco, que faz tudo por você, e até bloqueia a página de qualquer entrada enquanto o ajax está carregando. Caso o plug-in pareça não estar funcionando, você pode ler sobre a maneira correta de usá-lo nesta resposta. Confira.
fonte