Boa tarde pessoal estou tendo problemas com o retorno da minha chamada ajax abaixo segue o código:
$.ajax({
type: "POST",
url: "Controller?cmd=autenticarUsuario",
data: {'login':login, 'senha': senha},
sucess:function(retorno){
}
})
O código acima é minha chamada ajax, tenho o servlet ‘Controller’ que é responsavel por receber a requisição ver o comando dentro de uma lista de comandos e chamar a função que vai tratar o comando passado, abaixo segue o código do servelt:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.droidHelper.setRequest(request);
Comandos comando = droidHelper.getComando();
String paginaDestino = comando.execulte(request, response);
request.getRequestDispatcher(paginaDestino).include(request, response);
}
abaixo segue o comando que esta sendo execultado:
public class AutenticarUsuario implements Comandos {
private Session session;
public AutenticarUsuario(Session session) {
this.session = session;
}
@Override
public String execulte(HttpServletRequest request, HttpServletResponse response) {
UsuariosDAO usuariosDAO = new UsuariosDAO(this.session);
if (usuariosDAO.autenticaUsuario(request.getParameter("login"), request.getParameter("senha")) == Boolean.TRUE) {
request.setAttribute("logado", "autenticado");
} else {
request.setAttribute("logado", "nãoAutenticado");
}
return "login.jsp";
}
}
ai que acho que esta o problema, pois no retorno da minha chamada ajax quero pegar os valores que estou setando na request de volta que no caso é ’ request.setAttribute(“logado”, “autenticado”);’ ou ‘request.setAttribute(“logado”, “nãoAutenticado”);’, gostaria de saber como faço pra recuperar isso no retorno da chamada ajax usando o jquery.
Escrevi no browser sem testar
$.ajax({
type: "POST",
url: "Controller?cmd=autenticarUsuario",
data: {'login':login, 'senha': senha},
dataType: "json",
sucess:function(json) {
alert(json.logado);
}
})
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response().setContentType("application/json");
PrintWriter out = response.getWriter();
out.print("{ \"logado\": \"autenticado\" }");
out.close();
}
Acho q nem precisa do dataType: “json” quando seta o content type certo no Servlet
amigo gostaria de saber qual o comando no jquery pra abrir uma nova pagina, por exemplo caso meu servelet retorne logado gostaria de abrir uma nova pagina, vc sabe qual o comando no jquery?
Pra mudar a janela atual é window.location.href = ‘novaurl’
Pra abrir uma nova é window.open(‘novaurl’), mas acho q os anti-popup bloqueiam isso se tiver fora de um onclick
amigo acho que não funcionou o código, olha ve se fiz alguma coisa errada:
$.ajax({
type: "POST",
url: "Controller?cmd=autenticarUsuario",
data: {'login':login, 'senha': senha},
dataType: "json",
sucess:function(json) {
alert(json.logado);
}
})
esse é o meu javascript:
public class AutenticarUsuario implements Comandos {
private Session session;
public AutenticarUsuario(Session session) {
this.session = session;
}
@Override
public String execulte(HttpServletRequest request, HttpServletResponse response) {
UsuariosDAO usuariosDAO = new UsuariosDAO(this.session);
PrintWriter out = null;
response.setContentType("application/json");
try {
if (usuariosDAO.autenticaUsuario(request.getParameter("login"), request.getParameter("senha")) == Boolean.TRUE) {
out = response.getWriter();
out.print("{ \"logado\": \"autenticado\" }");
} else {
out.print("{ \"logado\": \"naoAutenticado\" }");
}
} catch (IOException ex) {
System.out.println("Erro ao montar o objeto json que será enviado de volta para a autenticação do usuário: Erro: " + ex);
}
out.close();
return "login.jsp";
}
}
acima segue o código do meu camando pra autenticar usuário, porem o alert não foi exibido tem alguma coisa errada?
Como o amigo citou acima…
Veja se lhe ajuda!
request.setAttribute("logado", "CONTEXTO + /usuarioautenticado.jsp");
sucess:function(json) {
open( json.logado );
}
Ou vc pode ganhar mais com ajax e evitar estes block-pop
usando o inject html do jquery.
request.setAttribute("logado", "<b>NÃO ESTA LOGADO</b>");
[code]
[/code]
[code]sucess:function( json ) {
$("#target").html( json.logado );
} [/code]
[quote=srmachado]amigo acho que não funcionou o código, olha ve se fiz alguma coisa errada:
acima segue o código do meu camando pra autenticar usuário, porem o alert não foi exibido tem alguma coisa errada?[/quote]
Certifique-se que você não faz nada com a request/response além de imprimir o json. Tipo retirar isso:
request.getRequestDispatcher(paginaDestino).include(request, response);
Se não der certo verifique o a respota vindo do servlet e o erro no console do Firebug ou inspector do Chrome
Amigo olhei no console do Chrome e a response esta vindo com o valor certo porem por algum motivo ele não esta dando o alet.
Opa sucess é com 2 c (success) 
Muito obrigado meu amigo victorcosta era isso mesmo um erro bem sutil era a palavra que estava errada estava colocando sucess e na verdade era success xD;