2016-12-16 97 views
0

我试着用欧芹远程验证注册表单的电子邮件和用户名。我得到了百达消息:Laravel 5.3和欧芹远程验证

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' => '[email protected]', 
    '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

错误405 (Method Not Allowed)Laravel抛出,因为请求方法GET不允许处理注册为POST的路由。

首先,我不熟悉Parsley但观察你的代码后,我发现的是,你已经设置了parsley发送使用POST方法AJAX请求,但该数据类型设置为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有关可用数据类型的文档。