提交 ajax 请求时,我不断收到 500 错误。如果我在配置中关闭 CSRF,则发布工作。但是,一旦我打开它,我就会再次收到 500 错误。
在 config.php 我设置了以下值:
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
我确实加载了 jquery cookie,并且在我的 jquery 文件中我有以下代码:
$('#reorder').sortable({
opacity: '0.5',
update: function(e, ui){
newOrder = $( "#reorder" ).sortable('serialize');
csrf_cookie_name = $.cookie('csrf_cookie_name')
console.log(newOrder);
console.log(csrf_cookie_name);
$.ajax({
csrf_cookie_name: $.cookie('csrf_cookie_name'),
url: "/client/saveOrder",
type: "POST",
data: newOrder,
// complete: function(){},
success: function(feedback){
console.log('success');
$("#feedback").html(feedback);
//$.jGrowl(feedback, { theme: 'success' });
}
});
}
});
现在 csrf_cookie_name 的 console.log 是:cd660b153522bef89dc53f7f95cd6b1d 所以我得到了它看起来的价值?
最后是客户端中的一个非常简单的函数,用于处理数据。通常我会将其中的一些分离到模型中,但我试图保持简单,直到我让它工作。
function saveOrder()
{
$items = $this->input->post('item');
echo '<br/>Items2:' . var_dump($items);
$total_items = count($this->input->post('item'));
for($item = 0; $item < $total_items; $item++ )
{
$data = array(
'pageid' => $items[$item],
'rank' => $item
);
$this->db->where('pageid', $data['pageid']);
$this->db->update('pages', $data);
// echo '<br />'.$this->db->last_query();
}
视图中没有使用任何形式。它只是一个带有 LI 集合的 UL,我拖着它来排序。