在我的视图页面上,如果我在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');
这是我的Blade模板:
<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>
答案 0 :(得分:0)
您的代码存在一些问题。首先,您应该只检查确切的用户名而不是使用LIKE,或者这可以匹配类似的用户名。首先将您的函数更新为(代码中的注释):
public function username()
{
$username = Input::get('username');
$users = DB::table('user')
->where('username', $username) // exact matches only
->first(); // we only need one result
// instead of count, check that a valid result is returned
if ( $users !== null )
{
return true;
}
// else not required
return false;
}
您需要更新路线以调用正确的功能:
Route::post('test/username', 'PageController@username');
接下来,您需要更新JavaScript以正确地将数据发送到PHP脚本。将data
更新为:
data: { 'username': username },
如果仍然出现错误,则可能需要更新name()
函数以实际返回JSON。您可以使用以下方式执行此操作:
return \Response::json( true );
答案 1 :(得分:0)
在您的路线中,您实际上并未调用控制器中声明的username
函数,而是name
函数,该函数不存在。尝试修改您的第二条路线:
Route::post('test/username', 'PageController@username');