0

我尝试使用欧芹远程验证注册表单的电子邮件和用户名。我总是收到以下信息:

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'
]);

用户控制器:

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);
        }
}
4

1 回答 1

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.

因此,这是由于jsonprequest 方法的数据类型 ( )不合适而发生的POSTParsely我敢肯定GETPOST由于dataType:jsonp.

因此,您可以network tab在浏览器检查器中检查以找出正在发送的请求方法,您应该注册路由Route::get()或将其更改dataType为其他内容,json但您应该检查Parsely文档以获取可用的数据类型。

于 2016-12-16T21:49:19.867 回答