Não consigo pegar o retorno do Controller com JSON
3 respostas
M
mrcbrizoti
Pessoal,
Segui as orientações do site do Vraptor para fazer a troca de dados entre a View e o controller. Consegui chamar o controller através do Json, o controller processa normalmente e devolver o valor através do result.use(json()), mas os dados não voltam para o Json. Alguém pode me ajudar?
Na verdade está certo, pois {“success”:{“success”:true}} é um objeto.
O alert é ruim demais para ser usado como um “debugger”. Se você estiver usando google chrome ou firefox e trocar esse alert por:
Ele vai te mostrar um objeto no console e tudo o que tem dentro dele…
Dica:
Use o withoutRoot() para deixar seu JSON mais bonito e prático:
Assim, a saída vai ser a seguinte:
Logo, para acessá-lo, vc só vai precisar fazer isso:
M
mrcbrizoti
Rafael,
Muito obrigado pelas dicas! Ainda estou apanhando um pouco, mas com suas dicas acredito que estou no caminho!
Um abraço,
Rafael_Guerreiro
Pelo o que eu entendi dessa sua lógica, você quer verificar com ajax se o cpf digitado pelo usuário é válido, correto?
Então, existem várias formas de fazer algo nesse sentido:
Se o CPF for válido, você retorna status 202 e trata no success do ajax, se não, vc retorna um status 500 e trata no error do ajax:
// JavaScript
$.ajax({url:$('#contexto').val(),data:{cpf:cpfAjax},success:function(){// Aqui vc faz alguma coisa se deu certo, como colocar um certinho verde ao lado do input.},error:function(){// E aqui você faz algo para indicar que deu errado, como um 'x' vermelho no input.}});// JavapublicvoidvalidaCPF(Stringcpf){// Dá uma olhada no validador de CPF do Caelum Stella. Pois existe uma conta para verificar se é um cpf válido ou não (para isso que servem os dígitos) if(dao.BuscaCpf(cpf).size()>0)result.use(status()).badRequest("Esse CPF não é válido.");elseresult.use(status()).ok();}
Seria legal se você informasse para o seu usuário o que deu errado.
// JavaScript$.ajax({url:$('#contexto').val(),data:{cpf:cpfAjax},success:function(data){if(data.type=='success')// coloca a mensagem de sucesso na tela.else// coloca o data.message com a mensagem de erro na tela.},error:function(){// E aqui você faz um erro genérico para o seu input.}});// JavapublicvoidvalidaCPF(Stringcpf){Informativoinformativo=null;if(cpf==null)informativo=newInformativo("error","Não foi possível obter o cpf.");if(verificaCPF(cpf))informativo=newInformativo("error","Esse cpf é inválido.");if(dao.BuscaCpf(cpf).size()>0)informativo=newInformativo("error","Esse cpf já está sendo usado por outra pessoa.");elseinformativo=newInformativo("success","CPF Válido!");result.use(json()).withoutRoot().from(informativo).serialize();}// InformativopublicclassInformativo{privatefinalStringtype;privatefinalStringmessage;publicInformativo(Stringtype,Stringmessage){this.type=type;this.message=message;}// getters}