Javascript 更新用户详细信息时检查唯一用户名jquery modal

Javascript 更新用户详细信息时检查唯一用户名jquery modal,javascript,php,jquery,laravel-5,Javascript,Php,Jquery,Laravel 5,我正在使用jQuery模式为我的laravel项目创建和更新用户。创建新用户时,我会检查用户名的可用性。但该函数不支持update,当用户保存数据而不更改用户名时,会出现usernam Available错误。请建议如何修复 我的控制器 public function checkUsernameAvailability() { $user = DB::table('users')->where('username', Input::get('username'))->count();

我正在使用jQuery模式为我的laravel项目创建和更新用户。创建新用户时,我会检查用户名的可用性。但该函数不支持update,当用户保存数据而不更改用户名时,会出现usernam Available错误。请建议如何修复

我的控制器

public function checkUsernameAvailability()
{
$user = DB::table('users')->where('username', Input::get('username'))->count();

if ($user > 0) {
    $isAvailable = FALSE;
} else {
    $isAvailable = TRUE;
}

echo json_encode(
    array(
        'valid' => $isAvailable
    ));

}


jQuery modal
                        username: {
                            validators: {
                                notEmpty: {
                                    message: 'The Username field is required'
                                },
                                rules : {
                                    username : { alphanumeric : true }
                                },
                                remote: {
                                    url: "{{ URL::to('/checkUsername') }}",
                                    data: function (validator) {
                                        return {
                                            username: validator.getFieldElements('username').val()
                                        }
                                    },
                                    message: 'The Username is not available'
                                },
                                stringLength: {

                                    max: 100,
                                    message: 'The Username must be  less than 100 characters long'
                                }
                            }
                        },

1-您可以在ajax中发送一些参数,因为您知道它是更新的还是新的。您可以在服务器端检查它,仅当它是新用户时,才能根据参数值调用checkUsernameAvailability。在更新的情况下,您不需要调用该方法


2-或者如果这是用于检查用户可用性的更新,则不要调用ajax。

我认为在提交表单user.on'blur'jQuery并调用函数checkusernameAvailability之前,应该检查表中是否已经存在用户名,然后捕获响应,然后在更改函数的基础上创建用户或更新用户。希望这将对您有所帮助。

请尝试以下代码:

要添加的新代码

Javascript代码中的更改

PHP代码中的更改


当ajax请求完成并且结果已经获得时,请禁用“保存”按钮,或者使用全局js变量,并在ajax成功时设置为true/false,并在验证中使用该变量。@AbdullaChozhimadathil:问题是,此函数在创建新用户时非常有效。但当更新用户时,即使用户更新配置文件而不更改用户名,也会出现错误。请通知是的,我所做的是为更新创建另一个功能checkUsernameAvailability,但我想检查用户更新时,如果usernmae未随db更改,则不会为用户名Available提供任何错误,如果用户仅更改usernmae,则它应与db have any other匹配。请告诉我您的表结构,以便我可以帮助您解决或做一件事传递用户名值作为2个参数1将是实际的,您可以保留用户名属性,如$'username'.data'actval',$'username'.val,仅在第一次加载页面时,您可以使用$'username'.data'actval'获取它;并将其与javascript中的数据函数结合使用,然后根据它从db中获取数据,并将db的用户名与UITable中更改的用户名进行比较。我的表结构是id、usernmae、full_name、password。您能告诉我如何在代码中采纳您的建议吗。
$(document).ready(function(){
    $('#username').data('actval',$('#username').val());
});
username: {
                        validators: {
                            notEmpty: {
                                message: 'The Username field is required'
                            },
                            rules : {
                                username : { alphanumeric : true }
                            },
                            remote: {
                                url: "{{ URL::to('/checkUsername') }}",
                                data: function (validator) {
                                    return {
                                        username: validator.getFieldElements('username').val(),
-----------------------                     actusername: $('#username').data('actval')
                                    }
                                },
                                message: 'The Username is not available'
                            },
                            stringLength: {

                                max: 100,
                                message: 'The Username must be  less than 100 characters long'
                            }
                        }
                    },
public function checkUsernameAvailability()
{
    $user = 0;
    if(Input::get('username') != Input::get('actusername')){
       $user = DB::table('users')->where('username', Input::get('username'))->count();
   }


if ($user > 0) {
    $isAvailable = FALSE;
} else {
    $isAvailable = TRUE;
}

echo json_encode(
    array(
        'valid' => $isAvailable
    ));

}