Javascript 更新用户详细信息时检查唯一用户名jquery modal
我正在使用jQuery模式为我的laravel项目创建和更新用户。创建新用户时,我会检查用户名的可用性。但该函数不支持update,当用户保存数据而不更改用户名时,会出现usernam Available错误。请建议如何修复 我的控制器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();
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
));
}