输出数组为NULL

时间:2017-07-14 08:09:38

标签: arrays ajax codeigniter

我正在尝试将javascript数组发送到CI控制器,但是数组是NULL我试过strigify但是输出数组仍然是null 请帮帮我。

这是脚本

<script type="text/javascript"> 
    $(document).ready(function(){
        $('#button').click(function(){
            var TableData = new Array();
            $('#sampleTbl tr').each(function(row, tr){
                TableData[row]={
                    "Day" : $(tr).find('td:eq(0)').text(),
                    "A" :$(tr).find('td:eq(1)').text(),
                    "B" : $(tr).find('td:eq(2)').text(),
                    "C" : $(tr).find('td:eq(3)').text()
                }
            }); 
            TableData.shift(); 
            var fullname = $('#fullname').val();
            console.log(TableData);
            console.log(fullname);
            var arr = JSON.strigify(TableData);
            $.ajax({
                url: '<?php echo base_url('site/ajax');?>',
                type: 'POST',
                datatype: 'json',
                data: {arr: arr},
                success: function(){

                }
            });
        });
    });
</script>

这是表格

<form action="<?php echo base_url()?>site/ajax" method="post">
    <input type="text" id="fullname" name="fullname">
    <input type="submit" name="button" id="button" value="button">
    <table id="sampleTbl">
        <tr>
            <th>Days</th>
            <th>coloum A</th>
            <th>coloum B</th>
            <th>coloum C</th>
        </tr>
        <tr>
            <td>Sunday</td>
            <td>sunday a</td>
            <td>sunday b</td>
            <td>sunday c</td>
        </tr>
        <tr>
            <td>Monday</td>
            <td>monday a</td>
            <td>monday b</td>
            <td>monday c</td>
        </tr>
        <tr>
            <td>Tuesday</td>
            <td>tuesday a</td>
            <td>tuesday b</td>
            <td>tuesday c</td>
        </tr>
        <tr>
            <td>Wednesday</td>
            <td>wednesday a</td>
            <td>wednesday b</td>
            <td>wednesday c</td>
        </tr>
        <tr>
            <td>tdursday</td>
            <td>tdursday a</td>
            <td>tdursday b</td>
            <td>tdursday c</td>
        </tr>
        <tr>
            <td>Friday</td>
            <td>friday a</td>
            <td>friday b</td>
            <td>friday c</td>
        </tr>
        <tr>
            <td>Saturday</td>
            <td>saturday a</td>
            <td>saturday b</td>
            <td>saturday c</td>
        </tr>
    </table>
</form>

这是控制器部分

public function ajax(){

    $fullname = $this->input->post('fullname');
    $arr = $this->input->post('arr');
    $array = json_decode($arr);
    echo "<pre>";
    echo $fullname;
    echo "<br>";
    print_r($array);
    // var_dump($_POST);
}

2 个答案:

答案 0 :(得分:0)

JSON对象上没有“strigify”方法。 请改用此行:var arr = JSON.stringify(TableData);

答案 1 :(得分:0)

您不会在数据中发送key/value对。只是一个字符串化数组的值。如果未指定密钥,$_POST将为空

确实没有必要stringifiy数组。 jQuery将在内部转换为表单编码数组。

尝试不使用它。

$.ajax({
    method: "POST",
    url: your_url,
    data : {arr: arr},
    dataType: "json"
})......

然后在控制器中:

public function ajax(){
$arr = $this->input->post('arr');
// So on ...    
}