【问题标题】:CodeIgniter - Post multiple arrays to controllerCodeIgniter - 将多个数组发布到控制器
【发布时间】:2013-10-29 09:32:54
【问题描述】:

我有一个动态生成的表单,允许用户输入新数据和编辑现有数据。当表单提交时,它会整理输入的值,并根据它们是否是新的进行分组,前者用class="new-entry"表示。

所以该函数生成两个数组:updateDatainsertData。两个数组的格式相似:

[
    0: {
        'id'    = 1,
        'value' = foo
    },
    1: {
        'id'    = 1,
        'value' = 'bar'
    },
    etc...
]

我将它们组合成一个新的数组对象,通过 ajax 发送到控制器:

var postData = {
    'update_data': updateData,
    'insert_data': insertData
};

然后在ajax调用中:

$.post(url, postData, function() { // some code });

但是,在控制器中,将print_r($this->input->post())print_r($_POST) 作为测试只返回Array()。甚至$this->input->post('update_data') 也没有返回任何内容。

如何在控制器中检索这些数组?

【问题讨论】:

  • updateData 是 JSON 字符串吗?否则我建议JSON.stringify(updateData)。当然,insertdata 也是如此。
  • 我刚刚在我的本地主机上尝试了您的代码,它工作正常。但是我所做的我不知道你是否也这样做是因为我使用了$('.form').serializeArray()你可能需要它!
  • @Johan 我尝试在 updateData 和 insertData 上使用 JSON.stringify(),但控制器什么也没返回,甚至没有返回一个空数组。
  • @mamdouhalramadan 我会使用 serializeArray(),但我需要使用绑定到输入的数据属性手动填充数组。
  • 你能举个例子吗?!

标签: php jquery ajax arrays codeigniter


【解决方案1】:

这不是 Codeigniter 的问题。在发送之前将数组转换为正确的 JSON 对象(字符串化)。

使用

var postData = {
    'update_data': JSON.stringify(updateData),
    'insert_data': JSON.stringify(insertData)
};

$.post(url, postData, function() { // some code });

在你的控制器中,你可以通过

$update_data=json_decode($this->input->post('update_data'));
$insert_data=json_decode($this->input->post('insert_data'));

【讨论】:

  • 我之前试过这个,但我无法让它返回任何东西。
猜你喜欢
  • 2012-01-25
  • 2018-04-28
  • 2011-07-28
  • 2013-07-03
  • 2014-02-11
  • 1970-01-01
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多