如何使用Ajax在Laravel 5.2中验证电子邮件或用户名是否唯一?

时间:2016-09-09 03:06:42

标签: javascript ajax laravel-5.2

这是我的UserController,我在其中检查数据库中是否存在用户名并相应地返回json消息。我想要的是一个ajax请求发布到该控制器并在用户名存在或数据库中不存在时将消息返回到HTML表单。



 public function postSignUp(Request $request)
{


    $this->validate($request, [
        'first_name' => 'required|min:3|max:120',
        'last_name' => 'required|min:3|max:120',
        'username' => 'required|unique:users|min:6',
        'email' => 'required|email|unique:users',
        'password' => 'required|min:8',
        'gender' => 'required',
        'birthday' => 'required',
        'country' => 'required',
        'state' => 'required'
    ]);


    $username = $request->input('username', '');
    $user = User::where('username', $username)->first();

    // if the user was found, this will be true;
    // if the user wasn't found, $user will be null and this will be false
    if ($user) {
        return json_encode(false);
    } else {
        return json_encode(true);
    }




我希望能在这个问题上得到一些帮助,因为我在网上搜索了几个小时试图解决这个问题。

我目前正在使用laravel 5.2构建一个日志记录Web应用程序,但我无法弄清楚如何使用Ajax进行前端验证。我在网上找到了以下代码并做了一些修改以满足我的需求,但似乎没有任何工作。

我正在尝试将用户名字段验证为唯一字段。换句话说,如果数据库中存在用户名,我希望在提交表单之前让我的用户知道。有人可以帮忙吗?



<script>
    $(function () {
        $.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });
        //register is the form id.
        $("#register").validate({
            rules: {
              /*username is the name of the field
              that I want to validate using ajax*/
                username: {
                    required: true,
                    rangelength: [6, 15],
                    remote: {
                        url: "{{ url('App/Http/Controllers/UserController/postSignUp') }}",
                        type: "post"
                    }
                }
            },
            errorClass: "has-danger",
            validClass: "has-success",
            //success: "valid",

            highlight: function (element, errorClass) {
                $(element).fadeOut(function () {
                    $(element).fadeIn();
                });
                $(element).closest(".form-group").addClass(errorClass);
            },
            unhighlight: function (element, errorClass) {
                $(element).closest(".form-group").removeClass(errorClass);
            },
            errorPlacement: function (error, element) {
                error.insertAfter(element);
            }
        });
    });
</script>
&#13;
&#13;
&#13;

0 个答案:

没有答案