У меня проблемы с передачей аргументов через Laravel AJAX запрос. Есть много похожих вопросов, но ни один из них, похоже, не решает мою проблему.
Вот мои Laravel маршруты:
Route::get('workerAjax', function(){
return View::make('workerAjax');
});
Route::post('/workerAjax/post', 'WorkerController@storeWorker');
WorkerController. php
<?php
class WorkerController extends \BaseController {
public function storeWorker(Request $request){
return 'I am in';
}
}
рабочий Ajax .blade. php
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="_token" content="{{ csrf_token() }}" />
<title>Register worker</title>
</head>
<body>
<div class="container">
<div class="alert alert-success" style="display:none"></div>
<form id="myForm">
<!-- don't think I need this, but it doesn't work with or without -->
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label for="firstName">First Name:</label>
<input type="text" id="firstName">
</div>
<div class="form-group">
<label for="lastName">Last Name:</label>
<input type="text" id="lastName">
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="text" id="email">
</div>
<div class="form-group">
<label for="password">Password:</label>
<input type="password" id="password">
</div>
<button class="btn btn-primary" id='ajaxSubmit'>Submit</button>
</form>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"
integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
crossorigin="anonymous">
</script>
<script>
jQuery(document).ready(function(){
jQuery('#ajaxSubmit').click(function(e){
e.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
}
});
jQuery.ajax({
url: "{{ url('/workerAjax/post') }}",
method: 'post',
data: {
firstName: jQuery('#firstName').val(),
lastName: jQuery('#lastName').val(),
email: jQuery('#email').val(),
password: jQuery('#password').val(),
},
success: function(result){
jQuery('.alert').show();
jQuery('.alert').html(result.success);
}});
});
});
</script>
</body>
</html>
</html>
После заполнения формы в браузере и нажатия кнопки «Отправить» я получаю POST-ошибку 500 в консоли. Предварительный просмотр ошибки сети показывает это сообщение
error: {type: "Symfony\Component\Debug\Exception\FatalThrowableError",…}
file: "/path/to/folder/app/controllers/WorkerController.php"
line: 64 ( public function storeWorker(Request $request){ )
message: "Type error: Too few arguments to function WorkerController::storeWorker(), 0 passed and exactly 1 expected"
type: "Symfony\Component\Debug\Exception\FatalThrowableError"
Я чувствую, что все сделал правильно, но он все еще не работает. Может кто-нибудь более опытный с фреймворком, пожалуйста, помогите мне?
Редактировать: Вот данные, которые отправляются через запрос: Запрос XHR
Редактировать 2: Моя структура папок может быть частью головоломки, вот она: Структура папок приложения