2016-12-16 3 views
0

Я попытался удаленно проверить электронную почту и имя пользователя для регистрационной формы с петрушкой. Я получаю сообщение ВСЕГДА:Laravel 5.3 и Parsley remote validation

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 отправить запрос с помощью AJAXPOST метода, но типа данных устанавливаются в 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 документация по имеющимся типам данных.