使用ajax在Laravel5中进行用户名可用性检查
在我的查看页面上,如果我在加载loader.gif后输入用户名,但我没有得到用户名可用或不可用的结果。。请给我一些想法 这是我的控制器:使用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') -&
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');