You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Tabulator5+CodeIgniter4时,AJAX POST能否添加含CSRF的自定义数据?

解决CodeIgniter4下Tabulator POST请求添加CSRF Token和自定义数据的问题

完全可以给Tabulator的POST请求添加自定义数据,包括CodeIgniter4要求的CSRF Token,下面是具体的修改方案:

1. 获取CodeIgniter4的CSRF Token信息

CodeIgniter4默认会通过csrf_meta()函数在页面头部生成两个meta标签(如果你的模板里已添加这个函数),分别存储CSRF的名称和哈希值:

<meta name="csrf-token-name" content="csrf_test_name">
<meta name="csrf-token" content="xxxxxxxxxxxxxxxxxxxx">

用JS获取这两个值:

const csrfName = document.querySelector('meta[name="csrf-token-name"]').content;
const csrfHash = document.querySelector('meta[name="csrf-token"]').content;

2. 修改Tabulator配置,添加CSRF Token和自定义POST数据

直接在ajaxParams里把CSRF信息和自定义参数一起传入即可,这些参数会作为POST数据发送到后端:

//Build Tabulator
var table = new Tabulator("#example-table", {
    height: "311px",
    layout: "fitColumns",
    ajaxURL: "user/test/ajaxtest/",
    // 添加CSRF Token和自定义参数
    ajaxParams :{ 
        [csrfName]: csrfHash,
        key1 : "value1", 
        key2 : "value2" 
    },
    ajaxType:"POST",
    progressiveLoad: "scroll",
    paginationSize: 20,
    placeholder: "No Data Set",
    columns: [{
            title: "Name",
            field: "name",
            sorter: "string",
            width: 200
        },
        {
            title: "Progress",
            field: "progress",
            sorter: "number",
            formatter: "progress"
        },
        {
            title: "Gender",
            field: "gender",
            sorter: "string"
        },
        {
            title: "Rating",
            field: "rating",
            formatter: "star",
            hozAlign: "center",
            width: 100
        },
        {
            title: "Favourite Color",
            field: "col",
            sorter: "string"
        },
        {
            title: "Date Of Birth",
            field: "dob",
            sorter: "date",
            hozAlign: "center"
        },
        {
            title: "Driver",
            field: "car",
            hozAlign: "center",
            formatter: "tickCross",
            sorter: "boolean"
        },
    ],
});

3. 后端验证接收

在CodeIgniter4的user/test/ajaxtest方法里,可通过$this->request->getPost()获取所有POST数据,包括CSRF Token和自定义的key1、key2:

public function ajaxtest()
{
    $postData = $this->request->getPost();
    // 处理数据并返回JSON格式结果
    return $this->response->setJSON($yourProcessedData);
}

这样既满足CodeIgniter4的CSRF验证要求,也能正常发送自定义POST数据。

内容的提问来源于stack exchange,提问作者UWsol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:05:17