php - 使用ajax和laravel实时验证电子邮件(如果电子邮件已在数据库中,则显示电子邮件已被占用),就像gmail注册页面一样

标签 php jquery ajax laravel validation

我的 Laravel Controller 类检查电子邮件是否已存储在数据库中:在我的 User 表中,它检查电子邮件是否存在于数据库中?

public function checkemail(){
      $userCount = DB::table('users')->where('email', input::get('email'));
      if($userCount->count()) 
      {
          return Response::json(array('msg' => 'true'));
      }
      else 
      {
       return Response::json(array('msg' => 'true'));
      }
}

我的 Ajax 方法检查电子邮件是否已存储在数据库中? 如果它存储在数据库中,那么它应该说电子邮件地址已被占用,否则什么也没有。如果电子邮件被占用,它会显示为红线,如果没有,则不会显示任何内容。 表单名称为registration。
web.php 中的 url 是

routes::post('checkmail','postcontroller@checkmail');

jQuery

$("#registration").validate({

    errorElement: 'div',
    errorLabelContainer: '.errorTxt',
    ignore: [],

    //following rules for email
    rules: {
        email: {
            required: true,
            email: true,
            remote: {

                url: "checkemail",
                type: "post",
                data: {
                    email: $("input[email='email']").val()
                },
                dataFilter: function(data) {
                    var json = JSON.parse(data);
                    if (json.msg == "true") {
                        return "\"" + "Email address already in use" + "\"";
                    } else {
                        return 'true';
                    }
                }
            }
        },

    },
    messages: {
        email: {
            required: 'Email is required',
            email: 'Please enter a valid email address',
            remote: 'Email already taken'
        }


    },

    errorPlacement: function(error, element) {
        if (element.attr("name") == "email") {
            $(".erroremail").append(error);
        } else {
            error.append($('.errorTxt span'));
        }
    },


    submitHandler: function(form) {
        form.submit();

    }


});

任何人都可以帮助我吗,我对 Laravel 和 ajax 整体来说还很陌生。

最佳答案

文本框模糊事件

<input type="text" name="email" onblur="duplicateEmail(this)" class="form-control">

jQuery 函数

  function duplicateEmail(element){
        var email = $(element).val();
        $.ajax({
            type: "POST",
            url: '{{url('checkemail')}}',
            data: {email:email},
            dataType: "json",
            success: function(res) {
                if(res.exists){
                    alert('true');
                }else{
                    alert('false');
                }
            },
            error: function (jqXHR, exception) {

            }
        });
    }

路线

Route::post('/checkemail',['uses'=>'PagesController@checkEmail']);

Controller

public function checkEmail(Request $request){
    $email = $request->input('email');
    $isExists = \App\User::where('email',$email)->first();
    if($isExists){
        return response()->json(array("exists" => true));
    }else{
        return response()->json(array("exists" => false));
    }
}

您可以添加基于 truefalse 的 AJAX 成功处理程序代码

关于php - 使用ajax和laravel实时验证电子邮件(如果电子邮件已在数据库中,则显示电子邮件已被占用),就像gmail注册页面一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46035204/

相关文章:

php - n 个数组(或对象)中唯一元素的算法

javascript - Jquery 预加载器动画有效,但它是一个噱头还是它实际上是在计算站点负载?

performance - Stack Exchange如何如此快速地生成加载新页面?

php - 如何基于来自mysql w的ajax,jquery调用将不同的信息传递到单独的div中?

php - 如何将 php 数组从 mysql 返回到 google geolocation

php - WordPress save_post Hook 有错误的帖子?

php - 无法使用php+android从mysql检索数据

javascript - 选择 - 仅在更改时获取先前值和新值

jquery - 为什么 jquery Mega Menu 在 IE7 和 9 中显示在我的图像后面?

javascript - NodeJS : Not able to access an image using ajax GET method. 但相同的 URL 在浏览器中加载图像没有任何问题