首页 > 解决方案 > 使用 ajax 提交表单:工作正常,现在不工作?

问题描述

我在 signup.php 中有以下 HTML 表单:

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

我正在尝试使用 ajax 提交表单,而不刷新页面:

<!-- include files -->
<?php include 'assets/config.php';?>
<?php if(isset($_SESSION["CUSTOMER_ID"])){
header('Location: myaccount.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('assets/login.php',function(){}).hide().fadeIn(500);
            }         
          });
        });
      });
    </script>

我将表单发布到 do_signup_check.php 并运行查询以查看用户是否已注册。echo 1 表示肯定结果,0 表示否定结果:

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

?>

如果结果为 0,那么 ajax 应该加载我的页面 do_signup.php。但很遗憾,它并没有走到这一步。它工作正常,然后我关闭计算机并返回它,现在它无法工作。

请问有人可以告诉我我哪里出错了吗?

标签: phpajax

解决方案


if(result == 0){这里的结果没有在成功函数中使用:

你必须需要在这里传递结果变量:

success: function () {

作为:

success: function (result) {

现在,您可以使用您的条件if(result == 0){

其次,我建议你传递dataType: 'html'你的ajax请求。

编辑:

您在代码中使用<?php if(isset($_SESSION["CUSTOMER_ID"])){line,如果您没有session_start()在代码中使用,则此检查将不起作用。

对于这一行,data:{"name":name,"email":email},我没有看到nameemail在您的代码中,您定义了您在 ajax 参数中使用的这两个变量。


推荐阅读