【问题标题】:output array is NULL输出数组为 NULL
【发布时间】:2017-07-14 08:09:38
【问题描述】:

我正在尝试将 javascript 数组发送到 CI 控制器,但数组为 NULL 我也尝试了 stigify 但输出数组仍然为 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);
}

【问题讨论】:

  • data: {arr: arr} 你在哪里定义了 arr ?
  • 我现在改了代码
  • @cks 如果我的回答可以帮助您实现目标,那么您可以接受我的回答。

标签: arrays ajax codeigniter


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您没有在数据中发送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 ...    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-07
      • 2019-06-25
      • 1970-01-01
      • 2022-11-10
      • 2018-02-11
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      相关资源
      最近更新 更多