Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia amigos, implementei no meu código uma simples função pra formatar moeda:
jQuery(function(){
jQuery("#valorContratadoSecundario").maskMoney();
});
Quando carrego a página pela primeira vez funciona tudo ok.
Ocorre que tenho uma chamada ajax para o java, no meu método java são feitas algumas validações e em certo ponto é lançada uma exceção. A partir desse momento a função jQuery não funciona mais.
O que pode estar ocorrendo? Tem alguma forma de debugar essa chamada jQuery?o jeito é você fazer o .maskMoney logo após inserir o html no retorno do ajax.
>
Em 21/07/2017 at 20:13, William Bruno disse:
o jeito é você fazer o .maskMoney logo após inserir o html no retorno do ajax.
Então William assim consegui fazer, porém usei um setTimeOut() pra forçar o termino da chamada ajax e terá replicação de código e não gostaria de fazer isso.
Não trabalho com JQuery aqui pois o projeto é legado e usamos struts, nas chamadas ajax é usado o framework prototype, ai gera mais um problema, pois se fosse uma chamada ajax via JQuery existe o .done, este resolveria certo? Apesar de ainda ocorrer replicação de código.
Opções:
1 - Estudar sobre callbacks, é a (best choise)
2 - colocar dentro do bloco de retorno do seu ajax.... (Como o William falou acima)
$.ajax({
url: 'contato.php'
,data: $('#js-dados *').serialize()
,type:'POST'
,dataType: 'json'
,success: function(json){
//Chamr seu código aqui dentro
}
,error: function(json){
console.log(json);
}
});
3 - Fazer uma gabira em outro lugar: (melhor do que usar o timeout e pior do que as 2 de cima)
$( document ).ajaxComplete(function( event, xhr, settings ) {
if(settings.url == '/url_do_ajax'){
//Seu code aqui...
}
);
Boa sorte ;)>
17 horas atrás, gabrieldarezzo disse:
Opções:
1 - Estudar sobre callbacks, é a (best choise)
2 - colocar dentro do bloco de retorno do seu ajax.... (Como o William falou acima)
$.ajax({
url: 'contato.php'
,data: $('#js-dados *').serialize()
,type:'POST'
,dataType: 'json'
,success: function(json){
//Chamr seu código aqui dentro
}
,error: function(json){
console.log(json);
}
});
3 - Fazer uma gabira em outro lugar: (melhor do que usar o timeout e pior do que as 2 de cima)
$( document ).ajaxComplete(function( event, xhr, settings ) {
if(settings.url == '/url_do_ajax'){
//Seu code aqui...
}
);
Boa sorte ;)
Como você resolveria este problema usando callbacks?Recomendo a leitura:
https://pt.stackoverflow.com/questions/27177/o-que-é-callback
function minhaCallBack(returnhtml) {
$("#result").html(returnhtml);
$("#loadingimg").hide();
}
$(document).ready(function (e) {
$.ajax({
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: minhaCallBack
});
})
Edit/Update:
Só cuidado com o [callBackHell](http://callbackhell.com/)Já li muitos artigos sobre callback, sei o que é e como funciona, mas na hora de aplicar é o problema e saber onde aplicar também.
Neste caso ficou claro a aplicação pra mim, pensando em ter somente uma função para aplicar a máscara, a qual seria registrada no script principal e também chamada no callback do ajax, se eu fizer algo assim:
function aplicaMascara() {
jQuery(function(){
jQuery("#valorContratadoSecundario").maskMoney();
});
}
Consigo usar essa function aplicaMascara no sucess da chamada ajax também? Quero fazer o certo que é ter a "lógica" em um lugar somente e não replicar código, sei que a função do callback é exatamente esta, mas tenho dúvida se funcionaria o código desta forma.Ué , testa ai kkkk
Mas acredito que sim é o 'certo'. funciona de boa.
Ps: uma coisa que me incomoda (gosto pessoal mesmo) é esse jQuery.
pq não usar a notação $ ?
Fica mais simples assim:
function aplicaMascara() {
$("#valorContratadoSecundario").maskMoney();
}
Ou seria motivos maiores chamado 'Wordpress'?
(Caso seja Wordpress não tem erro):
wp_enqueue_script('jquery');
E no seu script:
(function($) {
$(document).ready(function() {
//Seu Ajax
//Sua função.
function aplicaMascara() {
$("#valorContratadoSecundario").maskMoney();
}
});
})(jQuery);Não consigo mais testar pois acabei abandonando esta solução por força maior, hehe.
Trabalho em um projeto legado que usa a lib Prototype para requisições ajax, e ele usa o mesmo caractere de seleção($).
Pelo que vi o problema é que quando o ajax roda esta função perde o bind com o id, pesquisei sobre o .on(), mas não estou sabendo aplicar ele na minha function, alguém pode me ajudar?
tentei assim: