控制器没有得到输入laravel

时间:2017-11-03 02:17:22

标签: php jquery ajax laravel controller

目前我正在尝试将创建表单传递给控制器​​。我有路线和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>  

1 个答案:

答案 0 :(得分:0)

我认为问题就在这一行

data: {serializedForm},

只需将其更改为

即可
data: serializedForm,

它应该解决问题。

<强>问题

我发现您的ajax请求存在两个问题

  1. 您确定使用的是ES-6 TransPiler,因为data:{serializedForm},是ES-6语法http://es6-features.org/#PropertyShorthand
  2. 如果你的javascript工作正常。您应该可以使用现有代码获得$request->get('serializedForm')['role_name']
  3. 希望有所帮助