Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsley(2.8.1)使用php进行唯一用户名验证_Php_Ajax_Bootstrap 4_Parsley.js - Fatal编程技术网

Parsley(2.8.1)使用php进行唯一用户名验证

Parsley(2.8.1)使用php进行唯一用户名验证,php,ajax,bootstrap-4,parsley.js,Php,Ajax,Bootstrap 4,Parsley.js,我阅读了Parsley Js网站的所有文档。但我不太了解如何设置依赖于AJAX响应的自定义验证 我需要验证用户名,并检查它是否已经存在于数据库中,如果是,并在点击提交按钮时显示错误 我在这里环顾四周,试图找到与此相关的任何问题,我不能确定,只有我知道ajax代码应该如何放置以验证表单。我需要知道PHP文件的外观。这就是我提出这个问题的原因 我正在使用欧芹js新版本。这是我的代码 <form class="forms-sample" id="form"> <div

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

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

我在这里环顾四周,试图找到与此相关的任何问题,我不能确定,只有我知道ajax代码应该如何放置以验证表单。我需要知道PHP文件的外观。这就是我提出这个问题的原因

我正在使用欧芹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使用Bootstrap4。我的欧芹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 
        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");
            } 
        }
    ?>
我无法想象我如何创建PHP文件来编写查询,以及我想从该PHP中得到什么

你能告诉我这里有什么需要修改的地方吗?你能指导我构建那个PHP文件来完成这个任务吗。我需要知道这个JS是否有效。多谢各位

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

        <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 
        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");
            } 
        }
    ?>

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

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

下面的内容应该非常接近

PHP

阿贾克斯


如果您不知道如何使用post变量执行sql查询,那么您可能会将php更改为您更熟悉的语言?Jquery根据请求的http状态代码运行success/error函数,因此如果您返回200 OK default,它将进入success回调,如果您返回任何其他内容,它将进入error callback否我知道如何查询数据库表,我需要知道要从php文件返回什么如果您可以向我发送repo,我也许能找到答案。PMi将把它发送给您兄弟:使用chrome开发者工具检查您的username.php页面是否被正确调用,并且没有返回任何语法错误。先生,这个ajax部分也适用于parsley js ajax方法?在parsley js中使用success:functiondata{response=true;},错误:函数{response=false;};返回响应;这个代码行。我可以继续吗?欧芹部分发生在AJAX调用之前,从我所知,它不应该影响它。嗯,先生,我仍然没有解决这个问题。无论如何,谢谢你的努力