目前我正在尝试将创建表单传递给控制器。我有路线和ajax呼叫设置并与路线交谈。我的问题是,当我使用ajax调用时,标题的检查工具正确显示我的表单值,但当我进入控制器时,request->输入不显示表单的任何值。
这是我的ajax电话
$(document).on("click", ".form-submit-btn", function() {
// Get the form id.
var formID = $(this).closest("form").attr("id");
var serializedForm = $(this).closest("form").serialize();
var substringEnd = formID.indexOf("-form");
var route = formID.substr(0, substringEnd).replace("-", "_");
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
// Submit the form.
$.ajax({
method: "POST",
url: "/" + route,
data: {
serializedForm
},
success: function(data) {
alert(data);
}
});
});
这是我的控制器
// Create Role
public function create(Request $request)
{
// Get and validate request params
$role = $request->input('role_name');
$active = $request->input('role-active', false);
return $role;
}
这是我的路线
Route::post('/create_role', 'RoleController@create');
我错过了阻止ajax调用将值发送到控制器的内容
如果有帮助,这是我的表格。
<form id="create-role-form" class="form">
{{ csrf_field() }}
<button class="pull-right right-close-btn">X</button>
<h1>Add Role</h1>
<hr />
<div class="form-group">
<label>Role Name</label>
<input type="text" name="role_name" class="form-control" />
</div>
<div class="form-group">
<input type="checkbox" name="role_active" value="true" checked /> Active
</div>
<div class="form-group">
<button class="btn btn-primary form-control form-submit-btn">Create</button>
</div>
答案 0 :(得分:0)
我认为问题就在这一行
data: {serializedForm},
只需将其更改为
即可data: serializedForm,
它应该解决问题。
<强>问题强>
我发现您的ajax
请求存在两个问题
data:{serializedForm},
是ES-6语法http://es6-features.org/#PropertyShorthand $request->get('serializedForm')['role_name']
。希望有所帮助