使用Laravel进行重复电子邮件的JQuery验证

3

你好,我正在使用 Laravel 代码来检查邮件地址是否唯一。在前端,我使用以下 jQuery 代码:

blade.php page
user_email: {
                                                    required: true,
                                                    email: true,
                                                    remote: {
                                                        url: base_url + "/validate_email",
                                                        type: "post"
                                                    }
                                                },

在POST中,我在控制器中使用了以下方法validation_email:
function validate_email(Request $request) {
        if ($request->input('user_email') !== '') {
            if ($request->input('user_email')) {
                $rule = array('user_email' => 'Required|email|unique:users');
                $validator = Validator::make($request->all(), $rule);
            }
            if (!$validator->fails()) {
                die('true');
            }
        }
        die('false');
    }

但是当我填写电子邮件并进行验证时,它显示一个CsrftokenMismatch异常错误。当我禁用csrf令牌时,csrf令牌编码工作正常,否则会抛出异常。请给我一些解决方案..谢谢

2个回答

4
将令牌随请求一起传递到您的blade模板中。
remote: {
    url: base_url + "/validate_email",
    type: "post"
    data: {
      _token: function() {
        return "{{csrf_token()}}"
      }
    }
  }

嗨@SteD,我应该传递它到哪里...我正在使用jQuery验证,并在单个ID上使用它。 - PHP Geek

0

很简单,你的CSRF令牌在表单中的一个隐藏字段中,我不记得ID是什么,但你可以获取该值并将其与电子邮件一起发送到你的POST请求中,例如:

required: true,
                                                    email: true,
                                                    remote: {
                                                        url: base_url + "/validate_email",
**YOU CAN ADD THE PARAMS HERE ( _id=" +$("#_id").val() +"),**
                                                        type: "post"
                                                    }

基本上,您需要将表单中的令牌添加到您的POST请求中,该值在表单中是隐藏的。希望我解释得清楚。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接