我尝试使用欧芹远程验证注册表单的电子邮件和用户名。我总是得到这样的信息:
public/checkUserName?username=tester 405 (Method Not Allowed)
所以这是我的代码:
输入:
<input data-parsley-remote="{{ route('checkUserName') }}" data-parsley-remote-message="Der Username ist bereits vergeben!" data-parsley-remote-options='{ "type": "POST", "dataType": "jsonp", "data": {_token: CSRF_TOKEN, "UserName": "username" } }'
路线:
Route::post('/checkUserName', [
'uses' => 'UserController@checkUserName',
'as' => 'checkUserName'
]);
UserController中:
public function checkUserName(Request $request)
{
if(user::where('UserName','=',$request->input('UserName'))->exists()){
return response::json('exists', 404);
}else{
return response::json('not exists', 200);
}
}
答案 0 :(得分:0)
405 (Method Not Allowed)
引发错误Laravel
,因为不允许请求方法GET
处理为POST
注册的路由。
首先,我对Parsley
不熟悉,但在观察您的代码后,我发现,您已设置parsley
发送AJAX
请求POST
方法,但数据类型设置为jsonp
。
// Extracted from the question
data-parsley-remote-options='{
"type": "POST",
"dataType": "jsonp",
"data": {_token: CSRF_TOKEN, "UserName": "username" }
}'
在这种情况下,使用jsonp
方法无法POST
,因为它会发送GET
请求(使用脚本标记...),因此找不到您的路由,因为您已将路线注册为POST
。
因此,由于请求方法jsonp
的数据类型不合适(POST
),正在发生这种情况。我确信,由于Parsely
,GET
正在发送POST
请求而不是dataType:jsonp
请求。
因此,您可以检查浏览器检查器中的network tab
以找出正在发送的请求方法,您应该使用Route::get()
注册路由或将dataType
更改为其他内容可能是json
,但您应该查看Parsely
文档以获取可用的数据类型。