我正在使用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我的英语(我是葡萄牙语,你可以看到),这是我第一次没有谷歌翻译。啊,如果可能的话,请评价我的语言技能,好吗? HAHAH
好的,seeya!
更新
经过多次调查(?)之后,我得出结论:
之后的所有代码 $dadosUsuario = $validarUsuario->fetch(PDO::FETCH_ASSOC);
$_SESSION['uid'] = $dadosUsuario['uid'];
不执行。实际上,“true”(来自echo)执行正常,但“true”(字符串)有一个换行符。参见:
我不明白! :S 如果我将`echo true'移动到我的源代码顶部,它会正常显示,没有换行符。
答案 0 :(得分:2)
是否有任何avascript错误?您使用的是Firebug还是Google Chrome控制台?如果是,请尝试记录您的响应,而不进行任何重定向。我写了简单的ajax-request并根据响应make(或不)重定向。一切正常。 HTML:
<div id="wrapper">
<form action="">
<input type="submit" id="submit" />
</form>
</div>
JS:
$('#submit').click(function(){
$.ajax({
url: "ajax.php",
async: false,
cache: false,
type: 'POST',
data: "show=1",
success: function(data){
if(data=='true'){
window.location.href="other-page.html";
} else {
$("#wrapper").append(data);
}
console.log(data);
}
});
return false;
});
非常简单的PHP:
if($_POST['show']==1)
echo 'true';
else
echo '<span class="error">Error</span>';
无论如何,尝试调试服务器的响应。 很抱歉有很多代码,但看不出你和我的代码之间的重要区别。也许你会。:) 我希望它会有所帮助。
答案 1 :(得分:0)
尝试添加域名。与window.location.href="http://example.com/home";