Laravel 5.3和Parsley远程验证

时间:2016-12-16 21:25:15

标签: json laravel parsley

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

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

1 个答案:

答案 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),正在发生这种情况。我确信,由于ParselyGET正在发送POST请求而不是dataType:jsonp请求。

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