Ir para conteúdo
Fórum Script Brasil
  • 0

Como chamar função, chamar ajax, depois do ajax, continuar função?


jgd

Pergunta

Pessoal preciso de uma luz.

Tenho um form com efeitos css (style.display:block/ style.display:none)..

Daí por exemplo, validava se cpf já estava cadastrado via asp... e se já exisitia eu usava link <a href> para voltar...

Daí percibi que perdia as opções preenchidas e habilitadas nas div´s personalizadas porque originalmente algumas div´s estavam com style.display:none....

Então procurei validar no caso do cpf com ajax... Onde chamo o ajax para pegar o cpf caso ele já exista.

Mais a resposta do ajax é mais lenta do que a execução da função de validação e acaba por passar sem caratinr a checagem

Então pergunto:

Como posso chamar uma função, depois charmar a função do ajax... Enquanto o ajax não retornar não continuar a função e ainda se o ajax falhar.. cancelar a função?

Em outrar palavras:

Chamar funcao_de_validacao(){

retorno = chamar Ajax()

if (retonro =="S"){
retorno2 = chamar Ajax2()
}

if (retonro2 =="S"){

continua validacao

}


}

P.S.: Preciso charmar dos ajax pelo meno...

Agradeço qualquer ajuda

Abraço

jgd

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Não vejo muito sentido em fazer a validação no lado servidor utilizando AJAX. O melhor é fazer via Javascript (para informar ao usuário se algo estiver errado) e fazer novamente no servidor para garantir a integridade das informações.

No entanto, comunicar-se via AJAX apenas para a validação não é uma boa ideia. Seria melhor então enviar o formulário todo e, na página seguinte, informar ao usuário se ocorreram erros.

De qualquer maneira, se quiser fazer isso, o que recomendo é que cancele o envio do formulário (basta retornar false na função), trave todo o formulário (sete o "enabled" dos elementos como false) e, depois de fazer a validação, envie o formulário se estiver tudo correto ou informe o usuário e habilite novamente os elementos se houver algo errado.

Algo assim:

formulario.onsubmit=function()
{
    //verifica se está desabilidado (se estiver, habilita e envia, pois o comando foi feito via código)
    if(!formulario.enabled)
    {
        formulario.enabled=true
        return //envia
    }
    //desabilita o formulário
    formulario.enabled=false
    //requisição
    ...
    request.onreadystatechange=function()
    {
        if(request.readyState==4)
        {
            //verifica se a validação ocorreu com sucesso
            if(request.responseText=="S")
            {
                formulario.submit() //está tudo certo, envia
            }
            else
            {
                //habilita o formulário
                formulario.enabled=true
                alert("Ocorreu um erro ao validar") //erro
            }
        }
    }
    ...
    return false //cancela o envio do formulário
}

Link para o comentário
Compartilhar em outros sites

  • 0

Jonathan, 1º obrigado pela resposta.

Olha só: Também não estou convicto de estar no caminho mais certo em termos lógicos.

Pois o que tenho na verdade é um form com vários campos onde através de opções (radio) e seleções (select´s) mostro ou oculto (visualmente falando) campos deste form conforme o caso.

Exemplo:

....
Endereço de cobrança é diferente do principal? <input type="radio" name="endCob" onclick="verSelCob(this.value);" value="S" />Sim&nbsp;&nbsp;<input type="radio" name="endCob"  onclick="verSelCob(this.value);" value="N" />Não
<input type="hidden" name="obrigEndCob" size=4 title="Sobre endereço de cobrança"  value="" />

<div id="endCob1" style="display:none">
....
Afunção: verSelCob() Mostra a div id="endCob1" passando style="display:block. Entre outras E só parti para o caninho de tentar validar via ajax, por que se a validação não passar depois do SUBMIT... Ao retornar a página seja pelo botão “voltar” do navegador ou “java script:history.go(-1)”... Todas as informações colocadas nos campos tratandos conforme a minupluação das opções (radio) e seleções (select´s) antes selecionadas, São perdidas pois principalmente no I.E. Acho que seja porque no caso exemplo acima a div id="endCob1" estava originalmente com style="display:none. Não vejo saída para isso. Ou faço a validação com base no retonro dos ajax’s em questão... Ou terei que montar um form para cada situação que preciso: Exempo: Pergunto: Informe tipo de cadastro... (select) + botão avançar...
<option value='1'>Cliente</option> 
<option value='2'>Aluno</option>

Se casdastro = Cliente

Vai para um form com todos os campos relacionados ao casdastro de cliente (nome, endereço, endereço de cobrança, etc.

Se cadasttro =Aluno:

Vai para um form só com campos relacionados ao cadastro de alunos...

Mais aí... Dale botão "Avançar"..., "Avançar"... Até submeter efetivamente.

Compreende? Qual alternativa seguir?

jgd

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...