我正在尝试使用jQuery在CodeIgniter中创建一个可拖动的列表。我有代码,以便拖动工作,但我无法将数据转到控制器。
这是用于拖动的jQuery代码。
$(function() {
$( "#order" ).sortable({
opacity: 0.6,
cursor: 'move',
update: function(event, ui){
var order = $(this).sortable("serialize");
console.log(order);
$.ajax({
url: "http://localhost/codeigniter214/profile/save_order",
type: 'POST',
data: order,
success: function (data) {
$("#test").html(data);
}
});
}
});
});
这是可拖动的列表。
<?php if (isset($names)) {?>
<ul id="order">
<?php foreach (array_combine($ids, $names) as $id => $name) {?>
<li id="feed-<?php echo $id ?>"><?php echo $name; ?> <a href="profile/removefeed/<?php echo $id ?>">Remove</a></li>
<?php } ?>
</ul>
<?php } ?>
这是传递数据的控制器。但是,var_dump显示一个空数组,这让我相信问题在于AJAX和信息传输。
function save_order() {
var_dump($_POST);
$items = $this->input->post('item');
$total_items = count($this->input->post('item'));
echo '<h3>Debugging</h3>';
echo "<p>Total items sent: $total_items</p>";
$this->profile_model->update_order($total_items, $items);
}
非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
答案最终是关于CodeIgniter的CSRF实现。结束了将jQuery更改为以下内容并使用jQuery Cookie设置cookie。
$(function() {
$( "#order" ).sortable({
opacity: 0.6,
cursor: 'move',
update: function(event, ui){
var order = 'csrf_test_name=' + $.cookie('csrf_cookie_name') + '&';
order += $(this).sortable("serialize");
console.log(order);
$.ajax({
data: order,
csrf_test_name: $.cookie('csrf_cookie_name'),
type: 'POST',
url: "http://127.0.0.1/codeigniter214/profile/save_order",
success: function (data) {
$("#test").html(data);
}
});
}
});
});