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

标签 javascript jquery ajax validation laravel

我正在使用验证插件和 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/

相关文章:

javascript - 保存循环中每个项目的 ID,以便可以将其用作超链接,Jquery

javascript - 在 Ext.grid.Panel 列中显示之前修改文本字段中的值

javascript - 在多个文件中使用 socket.io

javascript - 让 <div> 使用网站源获取 &lt;iframe&gt; 的高度?

jquery - 将 jquery post 数据保存在变量中

javascript - 如何在 jQuery 的原型(prototype)函数中使用它?

jquery - 如何摆脱对话框周围丑陋的白线?

Jquery .css() 语法

php - PHP 应该生成什么来返回 jQuery AJAX 请求?

javascript - Ajax : check email availability with PHP