Codeigniter - 发布到控制器时附加的数组项目丢失

Posted

技术标签:

【中文标题】Codeigniter - 发布到控制器时附加的数组项目丢失【英文标题】:Codeigniter - Appended Array items lost when post to controller 【发布时间】:2018-06-17 01:59:16 【问题描述】:

我有一个查看页面

$nameArray = array('name' => 'Formname', 'id' => 'Formname');
echo form_open_multipart('controller/file_upload_function',$nameArray);
<table id="companytable" >
    <tr><td><input type="file" id="dummyfile" name="dummyfile"></td></tr>
    <tr>
         <td >
           <label id="addlabel" style="cursor: pointer;">
                        <i class="fa fa-plus-circle" aria-hidden="true"></i></label>
        </td>
    <tr>
        <td>  
              <input type="text" name="companyname[]"  class="cmp_textbx" placeholder="Enter Company">
        </td>
    </tr>
    <tr>
        <td>
            <input type="submit" id="btn_upload" name="btn_upload" value="Save">
        </td>
   </tr>
</table>
<?php echo form_close(); ?>

使用 Jquery 我需要根据用户附加更多的“公司名称”字段(点击“添加公司”标签)。“公司表”是表的 ID。

$("#addlabel").click(function()
    $("#companytable").append('<tr><td><input type="text" name="companyname[]"  class="cmp_textbx" placeholder="Enter Company"></td></tr>');
);

问题是当我尝试提交我的视图并尝试获取数组项“公司名称”时。

$company_items = array();
$company_items = $this->input->post('companyname');
print_r($company_items);

我只能获取已经给定视图页面的数组的第一项。附加的数组项丢失了。有人可以帮助我吗?

【问题讨论】:

您的代码运行良好... echo "&lt;pre&gt;";print_r($_POST); 在控制器/file_upload_function 上试试这个代码。 抱歉还是不行。 print_r($_POST);给出答案 Array ( [companyname] => Array ( [0] => fgfdg ) [btn_upload] => Save ) 那只是第一个数组项 请看我没有更改您的代码中的任何内容。它运行良好...Output 感谢大家的宝贵时间。 【参考方案1】:

您的 html 代码工作正常。问题来自 jquery 或添加按钮。如果您为此使用 html 按钮标记,则必须在 jquery 中使用 preventDefault() ,例如

$('.add').click(function(e)
e.preventDefault();
$("#companytable").append('<tr><td><input type="text" name="companyname[]"  class="cmp_textbx" placeholder="Enter Company"></td></tr>');
); 

或者您可以在选择类型作为按钮时使用输入,为此您不需要对代码进行任何更改。

【讨论】:

感谢@prasanna puttaswamy 的回复。实际上,我使用的是标签而不是添加公司的按钮。很抱歉造成误导。 你能和jquery一起添加完整的表单吗? @Gyandeep Sharma 我已经对问题进行了编辑。请检查它。

以上是关于Codeigniter - 发布到控制器时附加的数组项目丢失的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 表单的 URL 附加问题

Jquery easyui datagrid从codeigniter控制器加载数据

将表单文件附加到电子邮件,Codeigniter

CodeIgniter、Ajax... 如何使用 insert_id()

通过 Codeigniter 发送带附件的电子邮件时出错

在控制器内部调用函数时,codeigniter 404 函数不起作用