Laravel 5.3 и удаленная проверка 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'
]);

Пользовательский контроллер:

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

person theface    schedule 16.12.2016    source источник


Ответы (1)


Ошибка 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. Я уверен, что Parsely отправляет запрос GET вместо запроса POST из-за dataType:jsonp.

Таким образом, вы можете проверить network tab в инспекторе вашего браузера, чтобы узнать, какой метод запроса отправляется, и вам следует либо зарегистрировать маршрут с помощью Route::get(), либо изменить dataType на что-то другое, может быть json, но вам следует проверить доступную документацию Parsely. типы данных.

person The Alpha    schedule 16.12.2016