使用ajax调用调用php验证文件

时间:2017-07-21 22:24:18

标签: php jquery ajax

我正在尝试使用Ajax提交表单,问题是我所做的验证文件根本没有被调用(我通过在PHP验证文件中放入一些js警报来检查它)。我搜索了互联网并尝试了很多解决方案,但都没有奏效。我在代码中出错了吗? 这是我的HTML:

<form method="post" id="signup">
  <div class="form-group">
    <input type="fname" name="fname" id="fname" value="" class="form-control" placeholder="Your First name" />
  </div>
  <div class="form-group">
    <input type="lname" name="lname" id="lname" value="" class="form-control" placeholder="Your Last name" />
  </div>
  <div class="form-group">
    <input type="email" name="email" id="email" value="" class="form-control" placeholder="Your Email" />
  </div>
  <div class="form-group">
    <input type="password" name="password" id="password" value="" class="form-control"  placeholder="Your Password" />
  </div>
  <div class="form-group submit-btn">
     <input id="signupsumbit" type="submit" name="submit" value="Sign Up" class="btn btn-success btn-lg"/>
  </div>
</form>

这是ajax电话:

$(function (){
  $('#signup').on('submit', function (e) {
    e.preventDefault();
    $.ajax({
      type: 'POST',
      data: $('#signup').serialize(),
      url: 'login.php',
      success: function (data) {
         alert("data is"+data);
      }
    });
  });
});

这是我的一些PHP代码:     

include("connection.php");

echo "<script>alert(2)</script>";

if (isset($_GET['logout']) and $_GET['logout']==1 and isset($_COOKIE[id]))
{
    setcookie("email", '', time()-60*60*24);
    setcookie("password", '', time()-60*60*24);
    setcookie("id", '', time()-60*60*24);
    $message = "You have been logged out! Come back soon!";
}

if(mysqli_connect_error()) // if failed to connect to database
{
    die("Could not connect to database"); //stop the whole script from runnning
}

if (isset($_POST['submit']) and $_POST['submit'] == 'Sign Up')
{
    echo '<script>console.log(1)</script>'; //
    $error = '';
    $success = '';

    // email validation
    $email = $_POST['email'];

    if (empty($_POST['email']))
    {
        $error .="<br />Please enter your email";
    }
    else
    {
        if (!filter_var($email, FILTER_VALIDATE_EMAIL))
        {
            $error .="<br />Please enter a valid email address";  
        }
    }
    .
    .
    .
    .
?>

当然,我进行验证的PHP文件名为login.php。 正如您可能注意到的那样,我在我的PHP代码中添加了两个警报,我提醒2以确保调用该文件,并警告1以确保该表单已发布。可能性是,当我以正常方式(没有AJAX)提交表单时,两个警报都有效,但是当我使用AJAX提交时,它们都没有被警告。

我的控制台显示: enter image description here 任何帮助,将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

测试你的脚本,我发现提交按钮没有发送到你的login.php脚本。如果你e.preventDefault()然后再触发提交,则javascript正在提交表单而不是按钮。要解决您的问题,请创建一个名为“提交”和“值”的隐藏字段。注册并从提交按钮中删除名称属性(不需要),它应该可以正常工作。

<form method="post" id="signup">
    <input type="hidden" name="submit" value="Sign Up"> <!-- note this hidden field -->
    <div class="form-group">
        <input type="fname" name="fname" id="fname" value="" class="form-control" placeholder="Your First name" />
    </div>
    <div class="form-group">
        <input type="lname" name="lname" id="lname" value="" class="form-control" placeholder="Your Last name" />
    </div>
    <div class="form-group">
        <input type="email" name="email" id="email" value="" class="form-control" placeholder="Your Email" />
    </div>
    <div class="form-group">
        <input type="password" name="password" id="password" value="" class="form-control"  placeholder="Your Password" />
    </div>
    <div class="form-group submit-btn">
        <input id="signupsumbit" type="submit" value="Sign Up" class="btn btn-success btn-lg"/><!-- note the removed name attribute -->
    </div>
</form>