如何解决'if'等待json响应
我有这个功能:
function blur_validador(elemento){
mapeamento = {'cpf': validarcpf,'cep': validacep};
elemento.unbind('blur');
elemento.blur(function() {
if (mapeamento[elemento.attr('id')](elemento)!= true && elemento.val() != ""){
$(this).parent('.form-group').find('.invalid-tooltip').show();
}
else{
$(this).parent('.form-group').find('.invalid-tooltip').hide();
}
});
}
在此函数“ if”中,有效的函数将被调用:
var validacep = function(cep){
//Nova variável "cep" somente com dígitos.
var cep_val = cep.val().replace(/\D/g,'');
//Verifica se campo cep possui valor informado.
if (cep_val != "") {
//Expressão regular para validar o CEP.
var validacep = /^[0-9]{8}$/;
//Valida o formato do CEP.
if(validacep.test(cep_val)) {
//Preenche os campos com "..." enquanto consulta webservice.
cep.parents('.residencial').find("#logradouro").val('...');
cep.parents('.residencial').find("#complemento").val('...');
cep.parents('.residencial').find("#bairro").val('...');
cep.parents('.residencial').find("#município").val('...');
cep.parents('.residencial').find("#estado").val('...');
//Consulta o webservice viacep.com.br/
$.getJSON("https://viacep.com.br/ws/"+ cep_val +"/json/?callback=?",function(dados) {
if (!("erro" in dados)) {
//Atualiza os campos com os valores da consulta.
cep.parents('.residencial').find("#logradouro").val(dados.logradouro);
cep.parents('.residencial').find("#complemento").val(dados.complemento);
cep.parents('.residencial').find("#bairro").val(dados.bairro);
cep.parents('.residencial').find("#município").val(dados.localidade);
cep.parents('.residencial').find("#estado").val(dados.uf);
return true;
} //end if.
else {
//CEP pesquisado não foi encontrado.
cep.parents('.residencial').find('input').each(function(){
if ($(this).val() == '...'){
$(this).val('');
}
});
return false;
}
});
} //end if.
else {
//cep é inválido.
cep.parents('.residencial').find('input').each(function(){
if ($(this).val() == '...'){
$(this).val('');
}
});
return false;
}
} //end if.
else {
//cep sem valor,limpa formulário.
cep.parents('.residencial').find('input').each(function(){
if ($(this).val() == '...'){
$(this).val('');
}
});
return false;
}
}
问题是'if'不等待JSON调用完成,我也无法使用'then',因为该函数不会总是通过JSON传递,返回'then not func' ,我还听说ascync不是一个好习惯。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。