Php 使用Ajax/Jquery提交表单并检查结果?

Php 使用Ajax/Jquery提交表单并检查结果?,php,jquery,ajax,Php,Jquery,Ajax,我想使用ajax提交一个表单,进入我的页面“do_signup_check.php” 在那里,它将根据数据库检查用户输入的电子邮件地址,以查看是否存在匹配项 如果存在匹配项,我希望我的ajax表单将用户重定向到login.php页面 如果没有匹配项,我希望它加载我的页面“do_signup.php” 出于某种原因,代码似乎什么也没做。有人能告诉我哪里出了问题吗 我的Ajax表单: <html lang="en"> <head> <script src="http

我想使用ajax提交一个表单,进入我的页面“do_signup_check.php”

在那里,它将根据数据库检查用户输入的电子邮件地址,以查看是否存在匹配项

如果存在匹配项,我希望我的ajax表单将用户重定向到login.php页面

如果没有匹配项,我希望它加载我的页面“do_signup.php”

出于某种原因,代码似乎什么也没做。有人能告诉我哪里出了问题吗

我的Ajax表单:

<html lang="en">
<head>
  <script src="https://www.google.com/recaptcha/api.js" async defer></script>

  <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
        async defer>
  </script>

  <?php include 'assets/config.php'; ?>

  <script>
    $(function () {

      $('form').on('submit', function (e) {

        e.preventDefault();

        $.ajax({
          type: 'post',
          url: 'do_signup_check.php',
          data:{"name":name,"email":email},
          success: function () {
            if(result == 0){    
              $('.signup_side').fadeOut(500).promise().done(function() {
              $('.signup_side').load('do_signup.php',function(){}).hide().fadeIn(500);
            });

            }else{
              $('.signup_side').fadeOut(500).promise().done(function() {
              $('.signup_side').load('login.php',function(){}).hide().fadeIn(500);
            }
          });
        });
      });
  </script>
</head>
<body>
    <div class="sign_up_contain">

      <div class="container">

        <div class="signup_side">    
          <h3>Get Onboard.</h3>    
          <h6>Join the directory.</h6>

          <form id="signup" action="" method="POST" autocomplete="off" autocomplete="false">
            <div class="signup_row action">
              <input type="text" placeholder="What's your Name?" name="name" id="name" class="signup" autocomplete="new-password" autocomplete="off" autocomplete="false" required />
              <input type="text" placeholder="Got an Email?" name="email" id="email" class="signup" autocomplete="new-password" autocomplete="off" autocomplete="false" required />
              <div class="g-recaptcha" style="margin-top:30px;" data-sitekey="6LeCkZkUAAAAAOeokX86JWQxuS6E7jWHEC61tS9T"></div>
              <input type="submit" class="signup_bt" name="submit" id="submt" value="Create My Account">
            </div> 
          </form>

        </div>
      </div>   
    </div>
</body>
</html>

$(函数(){
$('form')。关于('submit',函数(e){
e、 预防默认值();
$.ajax({
键入:“post”,
url:“do_signup_check.php”,
数据:{“name”:name,“email”:email},
成功:函数(){
如果(结果==0){
$('.signup_-side').fadeOut(500.promise().done(函数()){
$('.signup_side').load('do_signup.php',function(){}.hide().fadeIn(500);
});
}否则{
$('.signup_-side').fadeOut(500.promise().done(函数()){
$('.signup_-side').load('login.php',function(){}.hide().fadeIn(500);
}
});
});
});
上车。
加入目录。
我的Do_Signup_Check.php页面:

<?php
session_start();        
require 'assets/connect.php';

$myName = $_POST["name"];
$myEmail = $_POST["email"];

$check = mysqli_query($conn, "SELECT * FROM user_verification WHERE email='".$myEmail."'");

if (!$check) {
    die('Error: ' . mysqli_error($conn)); 
}

if (mysqli_num_rows($check) > 0) {
    echo '1';
} else {
    echo '0';
}
?>
<?php
    session_start();        
    require 'assets/connect.php';


    $myName=$_POST["name"];
    $myEmail=$_POST["email"];

    $check = mysqli_query($conn, "SELECT * FROM user_verification WHERE email='".$myEmail."'");

    if (!$check) {
      die('Error: ' . mysqli_error($conn)); 
    }

    if(mysqli_num_rows($check) > 0){    
       echo json_encode(array('result'=>'1'));
       exit;    
    }else{    
      echo json_encode(array('result'=>'0'));
      exit;
    }

?>

请尝试此代码

$.ajax({
        type: 'post',
        url: 'do_signup_check.php',
        data:{"name":name,"email":email},
        success: function (result) {
        if(result == 0){ 
           window.location.href = 'do_signup.php';
        }else{
           window.location.href = 'login.php';
        }

      });
我的Do_Signup_Check.php页面:

<?php
session_start();        
require 'assets/connect.php';

$myName = $_POST["name"];
$myEmail = $_POST["email"];

$check = mysqli_query($conn, "SELECT * FROM user_verification WHERE email='".$myEmail."'");

if (!$check) {
    die('Error: ' . mysqli_error($conn)); 
}

if (mysqli_num_rows($check) > 0) {
    echo '1';
} else {
    echo '0';
}
?>
<?php
    session_start();        
    require 'assets/connect.php';


    $myName=$_POST["name"];
    $myEmail=$_POST["email"];

    $check = mysqli_query($conn, "SELECT * FROM user_verification WHERE email='".$myEmail."'");

    if (!$check) {
      die('Error: ' . mysqli_error($conn)); 
    }

    if(mysqli_num_rows($check) > 0){    
       echo json_encode(array('result'=>'1'));
       exit;    
    }else{    
      echo json_encode(array('result'=>'0'));
      exit;
    }

?>


我希望这对您有用。

在Ajax获得成功并完成所有必要的逻辑(淡出等)后,只需将用户重新定位到login.php:

window.location.href = 'path/to/login.php';
否则,在error函数中(在success函数之后执行),执行下一步操作:

window.location.href = 'path/to/do_signup.php';
Upd: 如果您想从另一个文件中获得一些代码,可以使用jQuery方法load

$('#some-selector').load('path/to/course/login.php');

这是使用“load”的一个非常基本的示例,您可以通过谷歌来了解更多信息。

尝试使用输入id“submt”来触发表单:

$(“#submt”)。单击(函数(){
e、 预防默认值();
//你的逻辑

您的页面中没有包含jquery,该函数也缺少右括号

在顶部包含jquery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

用以下代码替换函数:-

 <script>
$(function () {
    $('form').on('submit', function (e) {alert(123);

      e.preventDefault();

          $.ajax({
            type: 'post',
            url: 'receive-callback.php',
            data:{"name":name,"email":email},
            success: function () {
                if(result == 0){    
                    $('.signup_side').fadeOut(500).promise().done(function() {
                        $('.signup_side').load('do_signup.php',function(){}).hide().fadeIn(500);
                    });
                }else{
                    $('.signup_side').fadeOut(500).promise().done(function() {
                        $('.signup_side').load('login.php',function(){}).hide().fadeIn(500);
                    });
                }
            }
         });

    });

});
</script>

$(函数(){
$('form')。在('submit',函数(e){alert(123);
e、 预防默认值();
$.ajax({
键入:“post”,
url:'receive callback.php',
数据:{“name”:name,“email”:email},
成功:函数(){
如果(结果==0){
$('.signup_-side').fadeOut(500.promise().done(函数()){
$('.signup_side').load('do_signup.php',function(){}.hide().fadeIn(500);
});
}否则{
$('.signup_-side').fadeOut(500.promise().done(函数()){
$('.signup_-side').load('login.php',function(){}.hide().fadeIn(500);
});
}
}
});
});
});

也许您可以包含一个关于OPs问题的高级描述,以及您的示例如何解决它?您测试了代码吗?在JS部分,您需要检查响应,如您的案例中的
result.result==0
。我不希望简单的重定向。loging.php页面需要在div中通过ajax加载。使用login and signup model instead、 如果响应成功,则通过JQuery$('#loginModel').modal('show')显示登录模型;如果响应失败,则通过JQuery$('#suignupModel').modal('show')显示注册模型;