【发布时间】:2013-11-13 20:50:36
【问题描述】:
我使用的是 jQuery 版本 1.6.2,我无法在登录后将我的用户重定向到主页。实际上,我可以,但如果这样做,我将无法显示“错误消息”。
你能帮帮我吗?
我的 jQuery 代码:
$(".enviar").click(function() {
var email = $(".postEmail");
var setEmail = email.val();
var senha = $(".postSenha");
var setSenha = senha.val();
$.ajax({
url: "actions/logar.php",
async: false,
cache: false,
type: 'POST',
data: "email="+ setEmail +"&senha="+ setSenha,
success:function(data){
if(data == 'true'){
window.location.href="home";
} else {
$(".resposta").html(data);
}
}
});
return false;
});
“.enviar”是我的提交按钮,“.resposta”是我将显示错误消息的 div。
我的 PHP 代码:
if(!$AccountDAO->Registrado()){
$postEmail = addslashes(strip_tags(trim($_POST['email'])));
$postSenha = addslashes(strip_tags(trim($_POST['senha'])));
if ( !preg_match( '/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $postEmail )){
echo '<span class="error">O seu e-mail parece inválido</span>';
exit();
} elseif ( strlen($postSenha) < 4 ) {
echo '<span class="error">Digite uma senha com quatro ou mais caracteres</span>';
exit();
}
$validarUsuario = $SQL->prepare("SELECT * FROM `c_usuarios` WHERE `email` = :email AND `senha` = :senha");
$validarUsuario->bindParam( ':email', $postEmail, PDO::PARAM_STR );
$validarUsuario->bindParam( ':senha', hash('sha512', $postSenha), PDO::PARAM_STR );
$validarUsuario->execute();
if( $validarUsuario->rowCount() == true ){
$dadosUsuario = $validarUsuario->fetch(PDO::FETCH_ASSOC);
$_SESSION['uid'] = $dadosUsuario['uid'];
echo 'true';
} else {
echo '<span class="error">O e-mail ou a senha estão incorretos</span>';
}
}
?>
我已经尝试过“return true”而不是“echo “true””,但我得到了相同的结果:什么都没有。 =(
好的,抱歉 4 我的英语(如您所见,我是葡萄牙语),这是我第一次不用 Google 翻译。啊,如果也可以的话,请给我的语言能力打分好吗?哈哈哈
好的,再见!
更新
经过多次调试(?),我得出的结论是以下所有代码
$dadosUsuario = $validarUsuario->fetch(PDO::FETCH_ASSOC);
$_SESSION['uid'] = $dadosUsuario['uid'];
不执行。实际上,“true”(来自 echo)正常执行,但“true”(字符串)有换行符。见:
我不明白! :S 如果我将“echo true”移动到源代码的顶部,它会正常显示,没有换行符。
【问题讨论】:
-
那么 AJAX 请求是否会返回?如果你在成功函数中设置了一个 alert(),它会被调用吗?
-
当您返回
"true"时,您在success中的data是什么? -
使用 FireBug 之类的工具查看返回给 AJAX 调用的数据(它可以监控 .NET AJAX 请求并显示发送和检索的数据)。那么问题应该很容易找到。你的英语比我的葡萄牙语好多了:-)
-
语言技能 = 非常好。虽然我不会说葡萄牙语,但我不会像你说英语那样说西班牙语。 :D
-
这就是您的 PHP 文件中的全部内容吗?您是否收到任何服务器端错误?