试图用jQuery与php echo连接显示成功消息

时间:2014-04-13 14:19:25

标签: javascript php jquery

我试图用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;
    });

2 个答案:

答案 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