Passar parâmetros para o Controller com Jquery

3 respostas
J

Na página HTML, possuo um formulário para o usuário alterar sua senha. Um dos campos do formulário é para ele inserir sua senha atual. No momento que ele insere sua senha atual e sai do campo (onblur), é chamada uma função JS que faz uma requisição ao Controller do Spring para verificar se a senha que o usuário digitou corresponde à sua senha atual. O problema é que eu não sei como passar o parâmetro senha para o Controller.
Estou tentando isso:

JavaScript

function buscarSenhaBD() {
var senha = $(’#senhaatual’).val();
if (senha !== null && senha !== undefined) {
var url = ‘/web/anunciante/validar-senha’;
$.post(url, {vals: senha}, function (dataReturn) {
if (dataReturn === true) {
$(“form #senhaatual”).css({“border-color”: “green”});
$(“form #btn-salvar”).prop(“disabled”, false);
$(“form #btn-salvar”).removeClass(“grey”);
} else {
Materialize.toast(‘Esta senha não corresponde à sua senha atual!’, 4000, ‘green rounded toast’);
$(“form #senhaatual”).css({“border-color”: “red”});
$(“form #btn-salvar”).prop(“disabled”, true);
$(“form #btn-salvar”).addClass(“grey”);
}
});
}
}

Controller Java

@RequestMapping(value = “/anunciante/validar-senha”, method = RequestMethod.POST)
@ResponseBody
public Boolean validarSenha(String senha, HttpServletResponse response, HttpSession session) {
Boolean senhaOk = false;
try {
SenhaService ss = new SenhaService();
String senhaMD5 = ss.convertPasswordToMD5(senha);
Usuario usuario = (Usuario) session.getAttribute(“usuarioSessao”);
if(usuario != null){
if(usuario.getSenha().equals(senhaMD5)){
senhaOk = true;
}else{
senhaOk = false;
}
}
response.setStatus(200);
} catch (Exception e) {
e.printStackTrace();
response.setStatus(500);
}
return senhaOk;
}

3 Respostas

R

Eu não conheço o Spring, nem esse comando Controller, primeira vez que eu ouço falar deles, e com jQuery pior ainda…deve ser um algum framework!

Não sei qual o seu nível da linguagem JavaScript, mas tipo, tem como fazer usando PHP e Ajax (Técnica do JavaScript bem simples na minha opinião), quando der Onblur, o Javascript(Ajax) manda um POST com o nome do usuário e a senha digitada para uma página PHP, nesse script PHP você poderia tratar os dados do POST assim: Seleciona a senha dele no banco de dados pelo nome de usuário obviamente,  que veio do POST, e depois transformar o POST da senha que ele digitou para MD5 e comparar as duas com um If

if ($db_senha == $senha_post) {

echo senha_ok

}else {

senha_errada

}

Ai você pegaria essa string mostrada do echo com o reponseText do Ajax  no JavaScript e comparava da mesma maneira (o ReponseText pega o retorno do php).

If(responseText == senha_ok) {

Você poderia por a mensagem, A senha corresponde, ou mudar a com do input para verde, fica da sua preferência)

}else {

Colocaria borda do input para vermelho talvez, e uma mensagem, Sua senha atual não corresponde,

}

Pronto, senha verificada sem Refresh e sem perder dados digitados :smile: com Ajax

Tem que saber um “pouquinho” de JavaScript e Ajax, tenho certeza que da para fazer com jQuery, não uso, mas o raciocínio deve ser o mesmo…

Agora o ideal mesmo se você é iniciante, estudar muito JavaScript de deixar jQuery para depois, porque o jQuery é o JavaScript com outra cara, tem que saber Js para dominar melhor o JQuery

Espero ter ajudado ou de alguma maneira ter dado outra ideia pra você fazer seu Script…Valeu

J

Bom, primeiramente obrigado pela resposta!!
Acabei fazendo de outra maneira, pelo fato de não ter muito conhecimento com JS, estava meio que indo por tentativa e erro.

O que fiz foi apenas fazer uma validação com JS puro para verificar se os campos “nova-senha” e “confirmar-senha” estavam iguais, assim é possível que o usuário submeta o formulário. E para garantir que o texto digitado no campo “senha-atual” corresponde a senha do usuário no BD, fiz a validação no próprio Java, após o usuário submeter o formulário. Caso a senha não está OK, acontece o redirecionamento pro formulário novamente com o aviso de que a senha não está correta, assim o usuário pode preencher o formulário novamente e submetê-lo com os dados corretos.

R

Show de bola, eu uso essa mesma lógica sua hoje em alguns casos!!
Valeu!!

Criado 21 de setembro de 2016
Ultima resposta 22 de set. de 2016
Respostas 3
Participantes 2