javascript - PHP -> jQuery -> AJAX 表单验证

标签 javascript php jquery

我正在使用 jQuery 验证 PHP 中的注册表单。在我的 PHP 中,我的表单如下:

<form id="register-form">
    <input class="form-control" name="dispName" placeholder="Display name" type="text">
    <input class="form-control" name="email" placeholder="Email address" type="email">
    <input class="form-control" name="password" id="password" placeholder="Password" type="password">
    <input class="form-control" name="password2" placeholder="Re-enter password" type="password">
    <input class="btn btn-primary" id="submit-button" type="submit" value="Request Access">
</form>

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-2.1.3.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.0/jquery.validate.min.js"></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.13.0/additional-methods.min.js"></script>
<script src="request.js"></script>

在我的 request.js 中,验证如下:

$.validator.addMethod("checkUserName", 
        function(value, element) {
            var result = false;
            $.ajax({
                type:"POST",
                async: false,
                url: "check-username.php", // script to validate in server side
                data: {dispName: value},
                success: function(data) {
                    result = (data == true) ? true : false;
                }
            });
            // return true if username is exist in database
            return result; 
        }, 
        "This username is already taken! Try another."
    );
$("#register-form").validate({
    rules: {
      dispName: {
          required:true,
          nowhitespace: true,
          lettersonly: true,
          checkUserName: true
      },
      email: {
        required: true,
        email: true,
        remote: "http://localhost:3000/inputValidator"
      },
      pw: {
        required: true,
        strongPassword: true
      },
      cpw: {
        required: true,
        equalTo: '#password'
      }
    },
    messages: {
      email: {
        required: 'Please enter an email address.',
        email: 'Please enter a <em>valid</em> email address.',
      }
    }
  });

在我的 PHP 验证服务器端:

<?php
$searchVal = $_POST['dispName'];
try {
    $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password);

    $sql = "SELECT * FROM users WHERE dname = " . "'" . $searchVal .  "'";
    $stmt = $dbh->query($sql);
    $result = $stmt->fetch(PDO::FETCH_ASSOC);

   if($result){
      echo 'true';

   }else {
      echo 'false';
   }

    $dbh = null;
    }
        catch(PDOException $e)
    {
        echo $e->getMessage();
    }  
?>

我不断收到This username is already taken! Try another.即使我使用的名称不在数据库中。我在check-username.php上进行了测试在服务器上使用虚拟“POST”值并且工作正常。所以我对request.js中的语法有一种强烈的感觉。 。谁能指出我正确的方向...提前致谢...

最佳答案

你可以这样做:

$.validator.addMethod("checkUserName", 
    function(value, element) {
        var result = false;
        $.ajax({
            type:"POST",
            async: false,
            url: "check-username.php", // script to validate in server side
            data: {dispName: value},
            success: function(data) {
                result = (data == true) ? true : false;
 if(result == true){/*here you show error according to your way*/}
            }
        });

    }, 

);

关于javascript - PHP -> jQuery -> AJAX 表单验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42247531/

相关文章:

javascript - Bootstrap Affix 的替代方案

php - 如何合并相同的id,将数据合并为一条记录?

php - 只允许特定协议(protocol)查看网页

javascript - 更改 parent 背景颜色的 div 颜色

javascript - 鼠标悬停jquery方法不起作用

javascript break in for-await 循环完成生成器

javascript - 文本区域的不寻常形状?

javascript - 托管xml文件导致跨域

javascript - 通过 LAN 托管 Socket.io 服务器

php - 从 php 和在 Mysql Workbench 中查询特殊字符的结果不同