Jqueryvalidation用远程检查用户名

我正在使用validation插件和Laravel 4.2。 我尝试通过ajax检查用户名,但我无法让它工作。 可以随时使用用户名,无论是否存在都无关紧要。

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

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

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()创建一个自己的规则,但这也不起作用。

它看起来不像是在发送数据。 试试这个。 请注意post请求。 另外我相信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'; } } }