Bom dia galera…
tou com um pequeno problema… estou usando o vraptor + jquery pra fazer apenas um exemplo simples de login usando ajax. mas não estou conseguindo enviar a resposta para a página devidamente. já tentei de várias formas mas não consigo. vcs podem me dar uma ajuda?
a view está assim:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>VRaptor Blank Project</title>
<script type="text/javascript" src="<c:url value="/js/jquery.1.6.2.min.js"/>"></script>
<script type="text/javascript" src="<c:url value="/js/jquery.form.js"/>"></script>
<script type="text/javascript">
jQuery(document).ready(function(){
$('#formLogin').submit(function(){
//Limpando mensagem de erro
$('#erro').html('');
$('#loader').show();
$(this).ajaxSubmit(function(resposta){
if (!resposta){
}
else{
$('div.loader').hide();
$('div.erro').html(resposta);
}
});
return false;
});
});
</script>
<style type="text/css">
#erro{
border-radius: 11px;
border: 1px SOLID #A70000;
width: 200px;
height: 100px;
display: none;
}
</style>
</head>
<body>
<div id="login">
<form id="formLogin" action="<c:url value="/login"/>" method="POST">
<fieldset>
<div id="loader" style="display: none;">
<img src="<c:url value="/img/ajax-loader.gif"/>" height="16px" width="16px" alt="Carregando..."></img>
</div>
<p>
<label for="usuario.login">Usuario: </label>
<input type="text" name="login" id="usuario.login"></input>
</p>
<p>
<label for="usuario.senha">Senha: </label>
<input type="password" name="senha" id="usuario.senha"></input>
</p>
</fieldset>
<button type="submit" id="entrar">Entrar</button>
</form>
</div>
<div id="erro">
<p>Usuario e/ou senha incorretos!</p>
</div>
</body>
</html>
o Controller assim:
package br.com.caelum.vraptor.blank;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.util.extjs.ExtJSJson;
import static br.com.caelum.vraptor.view.Results.*;
@Resource
public class IndexController {
private final Result result;
public IndexController(Result result) {
this.result = result;
}
@Path("/")
public void index() {
result.include("variable", "VRaptor!");
}
@Path("/login")
@Post
public void logar(String login, String senha){
System.out.println(login.toString());
System.out.println(senha.toString());
if ((login.equals("felipe")) && (senha.equals("123456"))){
result.use(http()).body("Usuário correto!");
}
else{
result.use(http()).body("Usuário incorreto!");
}
}
}
o que faço?
dá uma ajuda ai galera rsrsrsrs
tentou fazer com $(’#formLogin’).ajaxForm()?
o que está acontecendo?
na verdade o q eu queria era fazer aquele parametro chegar na função
$(this).ajaxSubmit(function(resposta)
tipo lucas ele vai pra lógica no vraptor faz aqueles logs das senhas… ai depois fica parado… como se o vraptor não voltasse a resposta.
o que vc quer fazer deveria ser feito assim:
$(this).ajaxSubmit({
success: function(resposta) {
//o código que vc fez
}
});
tenta fazer assim…
doc: http://jquery.malsup.com/form/#ajaxSubmit
e aquela minha resposta no vraptor está certa?
Lucas,
Boa cara vlw… DEU CERTO…
agora vou dá uma pesquisada apenas pra saber se há uma espécie de incompatiblidade desse plugin para o firefox. Sabe dizer se tem alguma Lucas? pq no Chrome e no IE deu certo… é até no IE kkkkkkkkkkkkkkk’… menos no firefox. no safari também rodou.
mas bem, o código ficou assim:
<script type="text/javascript">
jQuery(document).ready(function(){
$('#formLogin').submit(function(){
//Limpando mensagem de erro
$('#erro').html('');
$('#loader').show();
$(this).ajaxForm();
$(this).ajaxSubmit({
success: function(resposta){
if (!resposta){
$('#loader').hide();
$('#erro').hide();
}
else{
$('#loader').hide();
$('#erro').html(resposta);
$('#erro').show('fast');
}
}
});
return false;
});
});
</script>
controller:
package br.com.caelum.vraptor.blank;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import static br.com.caelum.vraptor.view.Results.*;
@Resource
public class IndexController {
private final Result result;
public IndexController(Result result) {
this.result = result;
}
@Path("/")
public void index() {
result.include("variable", "VRaptor!");
}
@Path("/login")
@Post
public void logar(String login, String senha){
System.out.println(login.toString());
System.out.println(senha.toString());
if ((login.equals("felipe")) && (senha.equals("123456"))){
result.use(http()).body("");
}
else{
result.use(http()).body("<br />Usuario e/ou Senha incorretos!");
}
}
}
sim, teoricamente ele escreve aquilo na resposta
um jeito mais legal é fazer o seguinte:
if ((login.equals("felipe")) && (senha.equals("123456"))){
result.nothing(); //ok
}
else{
result.notFound(); // 404
}
daí no javascript vc trata como success (ok) ou error (404), daí não precisa nem do if
[quote=Lucas Cavalcanti]um jeito mais legal é fazer o seguinte:
if ((login.equals("felipe")) && (senha.equals("123456"))){
result.nothing(); //ok
}
else{
result.notFound(); // 404
}
daí no javascript vc trata como success (ok) ou error (404), daí não precisa nem do if[/quote]
Nossa Lucas… Deu mais do que certo… agora até no firefox funcionou hehehehe 
view:
<script type="text/javascript">
jQuery(document).ready(function(){
$('#formLogin').submit(function(){
$('#loader').show();
$(this).ajaxForm();
$(this).ajaxSubmit({
success: function(){
$('#loader').hide();
$('#erro').hide();
},
error: function(){
$('#loader').hide();
$('#erro').show('fast');
}
});
return false;
});
});
</script>
controller:
@Path("/login")
@Post
public void logar(String login, String senha){
System.out.println(login.toString());
System.out.println(senha.toString());
if ((login.equals("felipe")) && (senha.equals("123456"))){
result.nothing();//Ok
}
else{
result.notFound();//Erro
}
}
mto mais SIMPLES LUCAS!
ficou ótimo.
TAREFA DE HOJE: LOGIN Ajax no sistema kkkkkkkk’ 
Lucas,
Me dá mais uma ajudinha?
quando eu uso isso aqui oh
result.use(http()).body('aluno');
o firefox não reconhece essa resposta, mas todos os outros browsers sim. ele diz que há um erro de sintaxe. sabe como posso contornar isso… pq eu realmente agora preciso dessa resposta no submit.
pra dizer quando é aluno, quando é diretor
tenta passar um dataType: ‘text’ no ajaxSubmit:
$(this).ajaxSubmit({
...
dataType: 'text'
});
o firefox deve estar considerando como html ou json, daí dá erro mesmo
poxa lucas não deu certo…
o firefox não reconhece a reposta…
continua dando erro de sintaxe.
Putz lucas…
foi mal eu que tinha feito errado…
com essa dica do dataType: ‘text’ o firefox responde diretinho!
Brigado! agora concluiu 