我正在使用 Codeigniter 和 jqgrid 来构建应用程序。出于安全原因,我最近启用了 Codeigniter 的内置 CSRF 保护,它用 jqgrid 破坏了一些东西。当 jqgrid 被实例化时,我已经能够传递 csrf 令牌,因此我的所有数据都加载(通过将 csrf 令牌添加到 postData),但现在每当我编辑单元格时,我都会收到 500 错误,因为 csrf 令牌不是通过了。每次编辑单元格时,我都可以通过查看发布数据来验证这一点。我读了几个地方,editData 是我想要的,但是在那里添加令牌似乎并没有在编辑 ajax 请求中传递它。有任何想法吗?
$("#cust_grid").jqGrid({
url:'/ajax/grid',
datatype: 'xml',
mtype: 'POST',
postData: {<?php echo $this->security->get_csrf_token_name().":'".$this->security->get_csrf_hash()."'"; ?>},
editData: {<?php echo $this->security->get_csrf_token_name().":'".$this->security->get_csrf_hash()."'"; ?>},
colNames:['Name1', 'Name2'],
colModel :[
{name:'name1', index:'name1', width:55, search: true},
{name:'name2', index:'name2', width:110, search: true},
],
pager: '#pager',
rowNum:25,
rowList:[10,25,50,100],
sortname: 'name1',
sortorder: 'asc',
viewrecords: true,
gridview: true,
caption: 'Customers',
height: 600,
width: 1200,
shrinkToFit: false,
altRows: true,
cellEdit: true,
cellsubmit: "remote",
cellurl: "/ajax/editCell",
},
{}
);