【问题标题】:Controller not getting inputs laravel控制器没有得到输入 laravel
【发布时间】:2018-04-15 16:42:31
【问题描述】:

目前我正在尝试将创建表单传递给控制器​​。我有路由和 ajax 调用设置并与路由交谈。我的问题是,当我使用 ajax 调用时,标题的检查工具正确显示了我的表单值,但是当我进入控制器时,请求->输入不显示表单的任何值。

这是我的 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>  

【问题讨论】:

  • 检查控制器中的 print_r($request->serializedForm) 并查看数据是否可用

标签: php jquery ajax laravel controller


【解决方案1】:

我认为问题是这条线

data: {serializedForm},

改成

data: serializedForm,

它应该可以解决问题。

问题

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

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

希望对你有帮助

【讨论】:

  • 括号是问题所在,谢谢我不习惯序列化表单并发送它通常只是将数据中的输入手动编码为数组。
猜你喜欢
  • 1970-01-01
  • 2017-04-16
  • 1970-01-01
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2015-02-28
  • 2019-04-20
  • 2015-07-31
相关资源
最近更新 更多