使用ajax在Laravel5中进行用户名可用性检查

使用ajax在Laravel5中进行用户名可用性检查,ajax,laravel-5,Ajax,Laravel 5,在我的查看页面上,如果我在加载loader.gif后输入用户名,但我没有得到用户名可用或不可用的结果。。请给我一些想法 这是我的控制器: public function index() { return view('test/username'); } public function username() { $username = Input::get('username'); $users = DB::table('user') -&

在我的查看页面上,如果我在加载loader.gif后输入用户名,但我没有得到用户名可用或不可用的结果。。请给我一些想法

这是我的控制器:

public function index()
{
      return view('test/username');
}
public function username()
{
    $username = Input::get('username');
    $users = DB::table('user')
               ->where('username',$username)
               ->first();

    if ($users !== null)
    {
        return true;
    }

        return false;

}
以下是我的路线:

Route::get('test/username', 'PageController@index');
Route::post('test/username', 'PageController@username');
这是我的刀片模板:

<html>
    <head>
        <script type="text/javascript" src="https://code.jquery.com/jquery-1.7.1.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function () {
                $("#username").change(function () {
                    $("#message").html("<img src='../images/loader.gif' /> checking...");
                    var username=$("#username").val();
                    $.ajax({
                        type:"post",
                        url: "{{ URL::to('test/username') }}",
                        data: {username:username},
                        success: function (data) {
                            if (data == 0) {
                                $("#message").html("<img src='../images/yes.png' /> Username available");
                            } else {
                                $("#message").html("<img src='cross.png' /> Username already taken");
                            }
                        }
                    });
                });
            });
        </script>
    </head>
    <body>
        <table>
            <tr>
                <td>Username</td>
                <td>:</td>
                <td>
                    <input type="text" name="username" id="username"/>
                </td>
                <td id="message"></td>
            </tr>
        </table>
    </body>
</html>

$(文档).ready(函数(){
$(“#用户名”).change(函数(){
$(“#消息”).html(“检查…”);
var username=$(“#username”).val();
$.ajax({
类型:“post”,
url:“{{url::to('test/username')}}”,
数据:{username:username},
成功:功能(数据){
如果(数据==0){
$(“#消息”).html(“可用用户名”);
}否则{
$(“#message”).html(“用户名已被使用”);
}
}
});
});
});
用户名
:

您的代码存在一些问题。首先,您应该只检查准确的用户名,而不是使用LIKE,否则这可能会匹配相似的用户名。首先将函数更新为(代码中的注释):

您需要更新路由以调用正确的函数:

Route::post('test/username', 'PageController@username');
接下来,需要更新JavaScript以将数据正确发送到PHP脚本。将
数据更新为:

data: { 'username': username },
如果仍然出现错误,可能需要更新
name()
函数以实际返回JSON。您可以使用以下方法执行此操作:

return \Response::json( true );

在您的路由中,您实际上并没有调用控制器中声明的
username
函数,而是调用一个不存在的
name
函数。尝试将第二条路线修改为:

Route::post('test/username', 'PageController@username');

无论结果如何,使用返回相同视图的
if
/
else
语句有什么意义?谢谢,如果($user==0){return true;}else{return false;}更改数据:“username=“+username to data:{username:username}谢谢,但它不工作,我的ajax成功函数只执行我的else条件…请提供更多详细信息?你在看什么?您是否收到错误消息?除非你们进一步解释,否则我帮不上忙。我已经试过了,但在控制台中我检查过我的ajax并没有向控制器发送输入的数据,请建议我,我在ajax或控制器中有任何错误。。。谢谢你的回复。把你的路线改成
route::post('test/username','PageController@username');无法帮助您,除非您提供更好的信息。您的ajax调用返回什么?您看到了哪些错误消息?如果您的浏览器中有显示语法错误的javascript代码?刚才我检查了我的控制台,它没有显示任何错误,但只有一个条件(其他条件)在我的ajax中工作。我认为我在ajax中犯了错误,这就是为什么我输入的数据没有进入控制器,,,,请建议我做错了什么…谢谢回答。。
Route::post('test/username', 'PageController@username');