CodeIgniter jQuery拖放重新排序数据问题

时间:2013-11-11 23:22:13

标签: jquery ajax jquery-ui codeigniter

我正在尝试使用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);
}

非常感谢任何帮助。谢谢。

1 个答案:

答案 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);
            }

        });
    }

});
});