gpt4 book ai didi

php - 在 $.ajax jQuery 中返回 false 成功

转载 作者:行者123 更新时间:2023-12-01 04:25:32 25 4
gpt4 key购买 nike

我使用的是 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 我的英语(我是葡萄牙语,如你所见),这是我第一次不用谷歌翻译。啊,如果可以的话,请评价一下我的语言能力,好吗?哈哈

好的,再见!

更新

经过多次调试(?),我得出的结论是以下所有代码

            $dadosUsuario = $validarUsuario->fetch(PDO::FETCH_ASSOC);
$_SESSION['uid'] = $dadosUsuario['uid'];

不执行。事实上,“true”(来自 echo)正常执行,但“true”(字符串)有换行符。请参阅:

screenshot

我不明白! :S如果我将“echo true”移至源代码的顶部,它将正常显示,没有换行符。

最佳答案

有任何 JavaScript 错误吗?您使用的是 Firebug 或 Google Chrome 控制台吗?如果是,请尝试在不进行任何重定向的情况下记录您的响应。我编写了简单的 ajax 请求,并根据响应进行(或不进行)重定向。一切正常。网页:

<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>';

无论如何,尝试调试来自服务器的响应。抱歉有很多代码,但看不到你和我的代码之间的重要区别。也许你会的。:)希望对您有所帮助。

关于php - 在 $.ajax jQuery 中返回 false 成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6782686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com