gpt4 book ai didi

javascript - Jquery Validation 使用远程检查用户名

转载 作者:行者123 更新时间:2023-11-30 17:26:45 26 4
gpt4 key购买 nike

我正在使用验证插件和 Laravel 4.2。我尝试通过 ajax 检查用户名,但无法正常工作。用户名总是可以取的,不管是否存在。

我的第二个问题是,如果我使用远程验证规则,我将无法提交表单。

有人知道我做错了什么吗?因为在 chrome 日志中一切正常,请求已发送,我可以看到调试消息。

PHP

<?php 
use App\Models\User;
class ValidationController extends BaseController {

public function getCheckUsername()
{
if(Request::ajax()) {
$user = User::where('username', Input::get('username'))->get();
if($user->count()) {
return Response::json(array('msg' => 'true'));
}
return Response::json(array('msg' => 'false'));

}

}


}

JS

$(document).ready(function()
{
$("form").validate({

rules: {
username: {
required: true,
rangelength:[3,255],
remote: {
url:"http://"+location.host+"/validation/checkusername",
type: "get",
success: function(msg){
if(msg.msg == 'true') {
console.log('exists');
return true;
}
console.log('doesnt exists');
return false;
}

},


},
messages: {
username: {
required: "Please Enter Username!",
remote: "Username already in use!"
}
}
});
});

我还尝试通过 $.validator.addMethod() 创建自己的规则,但这也不起作用。

最佳答案

您似乎没有发送数据。尝试这个。注意发帖请求。我也相信 dataFilter 方法应该返回 'true'

更新 我刚刚也意识到如果用户存在,您的 php 中的逻辑会发回 true,因此 javascript 中的逻辑应该是这样的:

remote: {
url: "http://"+location.host+"/validation/checkusername",
type: "post",
data: {
username: function () {
return $("input[name='username']").val();
}
},
dataFilter: function (data) {
var json = JSON.parse(data);
if (json.msg == "true") {
return "\"" + "That username is taken" + "\"";
} else {
return 'true';
}
}
}

关于javascript - Jquery Validation 使用远程检查用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24105437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com