2016-12-16 70 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有關可用數據類型的文檔。