Php 接收和处理多维阵列

Php 接收和处理多维阵列,php,ajax,arrays,codeigniter,Php,Ajax,Arrays,Codeigniter,我已经问了两次这个问题,但没有令人满意的答案,也就是说,我在两个问题之前面临的问题仍然存在,而且没有一个问题比我将如何处理这个问题更明智 这一次,我将提供所有的代码和我收到的内容,加上问题发生的地方,我知道问题是什么,但由于我对使用AJAX比较陌生,这让我感到困惑 我有一个表单,当您单击倒数第二个字段时,它会复制自身,在另一个用户的帮助下,所有id都会更改为唯一 <form role="form" class="batchinvoice form-horizontal" id="batch

我已经问了两次这个问题,但没有令人满意的答案,也就是说,我在两个问题之前面临的问题仍然存在,而且没有一个问题比我将如何处理这个问题更明智

这一次,我将提供所有的代码和我收到的内容,加上问题发生的地方,我知道问题是什么,但由于我对使用AJAX比较陌生,这让我感到困惑

我有一个表单,当您单击倒数第二个字段时,它会复制自身,在另一个用户的帮助下,所有id都会更改为唯一

<form role="form" class="batchinvoice form-horizontal" id="batchinvoice">
                            <div class="row">
                                <div class="form-group col-md-2">
                                    <select class="form-control" name="sl_propid" >
                                        <?php foreach($property as $row) :?>
                                        <option value="<?php echo $row['id']; ?>">
                                            <?php echo $row[ 'property_name'] . " " . $row[ 'property_address1']; ?>
                                        </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                                <div class="form-group col-md-1">
                                    <input type="text" name="sl_date" placeholder="Date" class="sl_date form-control" id="datepicker">
                                </div>
                                <div class="form-group col-md-2">
                                    <input type="text" name="sl_ref" placeholder="Invoice Reference" class="form-control" id="sl_ref">
                                </div>
                                <div class="form-group col-md-2">
                                    <select class="form-control" name="sl_nom_id" id="sl_nom_id">
                                        <?php foreach($subitem_nominals as $row) :?>
                                        <option value="<?php echo $row['subnom_id']; ?>">
                                            <?php echo $row[ 'nom_subitem_name']; ?>
                                        </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                                <div class="form-group col-md-2">
                                    <input type="text" name="sl_desc" id="sl_desc" placeholder="Invoice Description" class="form-control">
                                </div>
                                <div class="form-group col-md-2">
                                    <input type="text" name="sl_vat" placeholder="VAT Amount" class="vat form-control" id="vat">
                                </div>
                                <div class="form-group col-md-1">
                                    <input type="text" name="sl_net" placeholder="Net" class="form-control" id="sl_net">
                                </div>
                        </form>

其中都包含每个表单的相关字段数据

我的问题是如何接收和处理阵列?我尝试过的每个循环都不起作用,我尝试过奇异地获取变量()(如您可以看到上面的注释),但这没有意义(或起作用),因为在$.ajax数据中,它被设置为res,但是$this->input->post('res')不返回任何内容,$this->input->post(NULL,TRUE)

主要是卡住了,我觉得这应该是一件简单的事情,但我显然不明白。

编辑,还是同样的问题,在任何地方都找不到答案D:,尝试了很多东西


仍然是同样的问题“res”作为post发送,但我无法用$this->input->post()在控制器中检索它……有人吗?

我只想提交一条评论,但显然我需要50个代表,所以我会冒险回答

在$.ajax块中,如果将数据部分更改为:

$.ajax({
    type: 'POST',
    url: '<?php echo base_url(); ?>FinancialInput/addInvoiceToLedger',
    data: { res : res },
    sucess: function (e) {
        alert(e);
    },
    error: function (e) {
        alert(e.toString());
    }
});
$.ajax({
键入:“POST”,
url:'FinancialInput/addInvoiceToLedger',
数据:{res:res},
成功:功能(e){
警报(e);
},
错误:函数(e){
警惕(如toString());
}
});

应该是这样的,但是,我不想检查这是否是问题所在,如果问题解决了,我会先谢谢你,然后再打自己哈哈。它仍然在foreachloop中返回无效参数,aka res没有设置任何值。
function addInvoiceToLedger(){
    // $this->load->model('SalesLedgerModel');
    // $propid = $this->input->post('propid');
    // print_r($this->input->post());
    // $date = $this->input->post('date');
    // $ref = $this->input->post('ref');
    // $nomid = $this->input->post('id');
    // $desc = $this->input->post('desc');
    // $vat = $this->input->post('vat');
    // $net = $this->input->post('net');

    $res = $this->input->post(NULL, TRUE);

    //problem is probably here, it's

    //for($x = 0; $x < count($res); $x++){


    foreach($res as $row){

    $this->SalesLedgerModel->addInvoiceToLedger($row.propid, $row.date, $row.ref, $row.nomid, $row.desc, $row.vat, $row.net);

    }
    //}


    //redirect('home/financial_input/');
}
function addInvoiceToLedger($propid, $date, $ref, $nomid, $desc, $vat, $net){

    $data = array('sl_prop_id' => $propid, 'sl_date' => $date,
        'sl_ref' => $ref, 'sl_nominal_sub' => $nomid, 'sl_invoice_desc' => $desc, 'sl_vat' => $vat, 'sl_amount' => $net);

    $this->db->insert_batch('salesledger', $data);
}
$.ajax({
    type: 'POST',
    url: '<?php echo base_url(); ?>FinancialInput/addInvoiceToLedger',
    data: { res : res },
    sucess: function (e) {
        alert(e);
    },
    error: function (e) {
        alert(e.toString());
    }
});