如何将ajax上的数据传递给codeigniter控制器

Posted

技术标签:

【中文标题】如何将ajax上的数据传递给codeigniter控制器【英文标题】:how to pass data on ajax to codeigniter controller 【发布时间】:2021-05-12 02:37:42 【问题描述】:

我有一个选择选项。我想将选定的选项值从 ajax 传递给我的控制器。但是,当我尝试从控制器回显它时,我得到的值为 null(所以我可以看到该值)。

这就是我显示选择选项的方式:

<form class="form-horizontal" action="#">
    <select name="categories" onchange="ipilihCat()" id="categories" class="js-example-placeholder-single form-control" style="width: 200px;">
        <option value="">pilih category</option>
        <?php
        foreach ($cats as $cats) 
            echo '<option value="' . $cats['category'] . '">' . $cats['category'] . '</option>';
        
        ?>
    </select>
</form>

这是我使用的 ajax 代码:

function ipilihCat()
var selected = $('#categories').val();

$('#target').DataTable(
    "processing": true,
    "serverSide": true,
    "order": [],
    "ajax": 
        "data": 
            'cats': selected
        ,
        "dataType": 'json',
        "url": "<?= base_url('welcome/iselCats'); ?>",
        "type": "POST",
        "success": function(data) 
            console.log(data);
        
    ,
    "columnDefs": [
        "target": [-1],
        "orderable": false
    ],
);

在我的控制器中,我像这样检查它:

public function iselCats()
   $cats = $this->input->post('cats');
   echo $cats;

我认为当我从 ajax 传递数据时存在问题。 这是传递数据的正确命令吗?

"data": 
            'cats': selected
        ,

【问题讨论】:

这里的selected 是什么? 嗨,感谢您回答我的问题。我已经更新了我的问题。来自var selected = $('#categories').val(); 加载时调用该代码?如果是,您的选择框将选择第一个选项,其中包含value="" 你的 ipilihCat() 定义在哪里?? 我用这个onChange = ipilihCat() 设置了选择选项,函数 ipilihCat() 包含 ajax 代码 【参考方案1】:

更改代码中的以下行

$('#target').DataTable(

var table = $('#target').DataTable(

并添加以下代码

$('#categories').on("change",function()
    table.ajax.url( "<?= base_url('welcome/iselCats'); ?>?cats="+this.value ).load();
);

这会将猫发送到您的服务器并刷新表格,其余过滤代码将在服务器端手动处理

【讨论】:

【参考方案2】:

试试下面的改动,已经用过几次了。

"url": "<? echo base_url('welcome/iselCats'); ?>",

【讨论】:

以上是关于如何将ajax上的数据传递给codeigniter控制器的主要内容,如果未能解决你的问题,请参考以下文章

如何将表单 FormSeetController 中的数据传递给 ViewController?

如何将更新的数据传递给已经渲染的子 vue 组件

如何将计时器中的数据传递给新的 ViewController (Swift 3)

如何通过 PageViewController 将 viewController 的数据传递给 pageViewController 的第二个 ViewController

如何使用 IOCP 将用户定义的数据传递给工作线程?

如何将片段中的 ListView 对象的数据传递给 Activity?