更新用户详细信息jquery模式时检查唯一的用户名

时间:2015-08-28 04:06:08

标签: javascript php jquery laravel-5

我正在使用jQuery模式为我的laravel项目创建和更新用户。在创建新用户时我检查用户名的可用性。但是该功能不支持更新,当用户在不更改用户名的情况下保存数据时,它会给出usernam availble错误。请告知如何修复

我的控制器,

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'
                                }
                            }
                        },

3 个答案:

答案 0 :(得分:0)

1 - 您可以在ajax中发送一些参数,如果它是更新或新的。并且只有当它是新用户时,您才可以在服务器端检查它是否基于参数值调用checkUsernameAvailability()。在更新的情况下,您不需要调用该方法。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

试试这段代码:

要添加的新代码

$(document).ready(function(){
    $('#username').data('actval',$('#username').val());
});

您的代码中的更改Javascript

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'
                            }
                        }
                    },

PHP代码更改

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
    ));

}