【问题标题】:Parsley (2.8.1) unique username validation with phpParsley (2.8.1) 使用 php 验证唯一用户名
【发布时间】:2018-06-23 09:00:58
【问题描述】:

我阅读了 Parsley Js 网站的所有文档。但我还不够了解如何设置自定义验证取决于 AJAX 响应。

我需要验证用户名并检查它是否已经存在于数据库中,如果是,则在点击提交按钮时显示错误。

我在这里环顾四周,试图找到任何与此相关的问题,我无法理解只有我知道应该如何放置 ajax 代码来验证该表单。我需要知道 PHP 文件的样子。这就是我发布这个问题的原因

我正在使用 parsley js 新版本。这是我的代码样子

<form class="forms-sample" id="form">
        <div class="form-group">
            <label for="exampleInputUsername1">Username</label>
            <input type="text" class="form-control" id="exampleInputUsername1" 
             name="username" placeholder="Username" required data-parsley-username>
        </div>
        <button type="submit" class="btn btn-success mr-2">Submit</button>
        <button class="btn btn-light">Cancel</button>
    </form>

我正在为 CSS 使用 Bootstrap 4。我的 Parsley js 脚本是这样的

        <script>
     window.ParsleyValidator
            .addValidator('username', function (value, requirement) {
                var response = false;

                $.ajax({
                    url: "username.php",
                    data: {username: value},
                    dataType: 'json',
                    type: 'post',
                    async: false,
                    success: function(data) {
                        response = true;
                    },
                    error: function() {
                        response = false;
                    }
                });
                return response;
            }, 32)
            .addMessage('en', 'username', 'The username already exists.');

    $("#form").parsley({
    errorClass: 'is-invalid',
    successClass: 'is-valid',
    errorsWrapper: '<span class="invalid-feedback"></span>',
    errorTemplate: '<span></span>',
    trigger: 'change'

});
</script>

我无法想象我如何创建 PHP 文件来编写查询以及我想从该 PHP 中回显什么。

你能告诉我这里有什么需要改变的吗,你能指导我构建那个 PHP 文件来完成这个任务吗?而且我需要知道这个 JS 是否有效。谢谢。

在我添加了一个 php 文件之后。就是这样的

<?php 
        include("include/connection.php");
    ?>
    <?php
        if(isset($_POST['username'])){
            $username = $_POST['username'];
            $query = "SELECT * FROM user WHERE userName = '%$username'";
            $q = mysqli_query($conn, $query);
            if(mysqli_num_rows($q) > 0) { 
                echo json_encode("error");
            }else { 
                echo json_encode("success");
            } 
        }
    ?>

但每次“用户名已存在”时,我都会收到默认错误消息。谁能知道这里的错误是什么?

【问题讨论】:

  • 如果您不知道如何使用 post 变量进行 sql 查询,那么也许从 php 更改为您更熟悉的语言? jquery根据请求的http状态码运行成功/错误函数,所以如果你返回200 OK(默认)就会进入成功回调,如果你返回其他任何东西就会进入错误回调
  • 不知道如何查询数据库表,我需要知道要从 php 文件返回什么
  • 如果你能把repo发给我,我也许能找到答案。下午
  • 我会发给你兄弟:)
  • 使用 chrome 开发者工具检查你的 username.php 页面是否被正确调用并且没有返回任何语法错误。

标签: php ajax bootstrap-4 parsley.js


【解决方案1】:

在 username.php 中,您将对传递的用户名运行基本选择查询,然后根据是否找到结果返回数据。

以下应该非常接近。

PHP

if ($user = $mysqli->query("SELECT * FROM `user_table_name` WHERE `username_field_name` = $_POST['username']"))) {
    print(json_encode(['status'] => 'user_exists']))

} else {
    print(json_encode(['status'] => 'user_available']))
}

AJAX

$.ajax({
    url: "username.php",
    data: {username: value},
    dataType: 'json',
    type: 'post',
    async: false,
    success: function(data) {
        if( data.status === 'user_available ) {
        //continue your code
        } else {
        //alert user that the name is unavailable
        }
    }

【讨论】:

  • 先生,这个 ajax 部分也适用于 parsley js ajax 方法吗?
  • 在欧芹 js 中使用成功:function(data) { response = true; },错误:函数(){响应=假; } });返回响应;此代码行。我可以继续这个吗?
  • 据我所知,Parsley 部分发生在 AJAX 调用之前,它不应该影响它。
  • 嗯,先生,我仍然没有弄清楚那个问题。无论如何感谢您的努力
猜你喜欢
  • 2016-06-26
  • 2013-07-09
  • 2017-11-02
  • 1970-01-01
  • 2018-04-13
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
相关资源
最近更新 更多