在提交表单数据上将PHP变量抛回Ajax

时间:2017-03-19 05:23:49

标签: javascript php jquery html ajax

好的,我有一个ajax函数,可以将数据发送到register-process.php。我希望register-process.php将PHP值$msg发送回ajax。我尝试使用$('.message').html("<?php $msg; ?>").fadeIn(500);成功,但它似乎不起作用。有没有办法做到这一点?

<script type="text/javascript">
$(document).ready(function() {
    $("#submit").click(function() {
        var username = $("#username").val();
        var password = $("#password").val();
        var email    = $("#email").val();
        var cpass    = $("#cpass").val();
        var dataString = {
            username: $("#username").val(),
            password: $("#password").val(),
            email: $("#email").val(),
            cpass: $("#cpass").val()
        };
        $.ajax({
            type: "POST",
            url: "register-process.php",
            data: dataString,
            cache: true,
            success: function(html){
                $('.message').html("<?php $msg; ?>").fadeIn(500);
            }
        });
        return false;
    });
});
</script>

寄存器process.php

<?php
include'config/db.php';
$msg = null;
$date = date('Y-m-d H:i:s');

$uname  = (!empty($_POST['username']))?$_POST['username']:null;
$pass   = (!empty($_POST['password']))?$_POST['password']:null;
$cpass  = (!empty($_POST['cpass']))?$_POST['cpass']:null;
$email  = (!empty($_POST['email']))?$_POST['email']:null;

if($_POST){
    $stmt = "SELECT COUNT(*) FROM members WHERE mem_uname = :uname";
    $stmt = $pdo->prepare($stmt);
    $stmt-> bindValue(':uname', $uname);
    $stmt-> execute();
    $checkunm = $stmt->fetchColumn();

    $stmt = "SELECT COUNT(*) FROM members WHERE mem_email = :email";
    $stmt = $pdo->prepare($stmt);
    $stmt->bindValue(':email', $email);
    $stmt->execute();
    $checkeml = $stmt->fetchColumn();

    if($uname == '' or $pass == '' or $cpass == '' or $email == ''){
        $msg = "<div class='message-error'>Fields cannot be left empty. Please fill up all the fields.</div>";
    }else if($checkunm > 0){
        $msg = "<div class='message-error'>This username is already registered. Please use a different username.</div>";
    }else if($checkeml > 0){
        $msg = "<div class='message-error'>This Email ID is already registered. Please use a different Email ID.</div>";
    }else if($pass != $cpass){
        $msg = "<div class='message-error'>Passwords are not matching.</div>";
    }else if(strlen($uname) > 12){
        $msg = "<div class='message-error'>Username should not be more than 12 characters long.</div>";
    }else if(strlen($uname) < 6){
        $msg = "<div class='message-error'>Username must be at least 6 characters long.</div>";
    }else if(strlen($pass) < 6){
        $msg = "<div class='message-error'>Password must be at least 6 characters long.</div>";
    }else{
        // If everything is ok, insert user into the database
        $stmt = "INSERT INTO members(mem_uname, mem_pass, mem_email)VALUES(:uname, :pass, :email)";
        $stmt = $pdo->prepare($stmt);
        $stmt-> bindValue(':uname', $uname);
        $stmt-> bindValue(':pass', password_hash($pass, PASSWORD_BCRYPT));
        $stmt-> bindValue(':email', $email);
        $stmt-> execute();

        if($meq){
            $msg = "<div class='message-success'>Congratulations! You have been registered successfully. You can now login!</div>";
        }else{
            $msg = "<div class='message-error'>Server Error! Please try again later. If problem persists, please contact support.</div>";
        }
    }
}
echo $msg;
?>

1 个答案:

答案 0 :(得分:1)

在你的Ajax函数中,不需要回显php变量。只需对你的html元素进行地图响应,如下所示:

$.ajax({
            type: "POST",
            url: "register-process.php",
            data: dataString,
            cache: true,
            success: function(html){
                console.log(html);//see output on browser console
                $('.message').html(html).fadeIn(500);
            }
        });