我试图用jQuery消息做一个恢复密码系统,我遇到了问题。
下面的代码工作正常,当我点击按钮恢复我的用户名和密码时,我收到消息<p class="sucess">Email sent with your data..</p>
。
但我想把用户的电子邮件放在邮件中。像这样:
<p class="sucess">Email sent with your data for email@example.com!</p>
我在我的php中尝试这样的
else {
echo 'sucess'; //here I show the jQuery message
echo $result['email']; //and then I want to show my $result['email']
return;
}
我已经尝试过这样:
echo 'sucess'.$result['email'].'';
但我总是遇到同样的问题,我在jQuery中进入这里:
else
{
alert('Error in system');
}
如果我不把这个echo放在$ result ['email']中,那么sucess消息就可以了,但是当我尝试回显我的$ result ['email']时,我总是进入这个jQuery状态。 有人知道为什么会这样吗?
我的php:
switch ($action){
case 'recover':
$email = $_POST['email'];
if($email == ''){
echo 'errorempty';
}else{
$searchEmail = $pdo->prepare("SELECT * FROM admins WHERE email=:email");
$searchEmail->bindValue(":email", $email);
$searchEmail->execute();
$num_rows = $searchEmail->rowCount();
$result = $searchEmail->fetch(PDO::FETCH_ASSOC);
if($num_rows <=0 )
{
echo 'erroremail';
return;
}
else {
echo 'sucess';
echo $result['email'];
return;
}
}
break;
default:
echo 'Error';
}
}
我的jQuery:
$('#recover').submit(function(){
var login = $(this).serialize() + '&action=recover';
$.ajax({
url: 'switch/login.php',
data: login,
type: 'POST',
success: function(answer){
if(answer== 'erroempty'){
$('.msg').empty().html('<p class="warning">Inform your email!</p>').fadeIn('slow');
}
else if (answer == 'erroemail'){
$('.msg').empty().html('<p class="error">Email dont exist!</p>').fadeIn('slow');
}
else if(answer == 'sucess'){
$('.msg').empty().html('<p class="sucess">Email sent with your data..</p>').fadeIn('slow');
window.setTimeout(function(){
$(location).attr('href','dashboard.php');
},1000);
}
else{
alert('Error in system');
}
},
beforeSend: function(){
$('.loginbox h1 img').fadeIn('fast');
},
complete: function(){
$('.loginbox h1 img').fadeOut('slow');
},
error: function(){
alert('Error in system');
}
});
return false;
});
答案 0 :(得分:1)
你可以像这样简单地回复$email
$email=$result["email"];
echo $email;
然后在ajax成功函数
if(answer.email)
{
$('.msg').empty().html('<p class="sucess">Email sent with your data..'+answer.email+'</p>').fadeIn('slow');
}
答案 1 :(得分:1)
问题是,服务器端只返回非结构化数据,客户端部分只会在answer变量中收到sucessdummy@example.com
之类的普通字符串。
将此答案变量与不匹配的字符串进行比较,以确定您的脚本在错误情况下结束。我会通过返回像json这样的结构化数据来寻求解决方案。
您的服务器端代码可能类似于
$result = array('msg'=>'success','mail'=>$result['email']);
header('Content-type: application/json');
echo json_encode($result);
您必须在jquery ajax调用中传递dataType:'json'选项才能使其正常工作,并且可以访问回调函数中的数据,如answer.msg,answer.mail