0

我正在尝试使用 jQuery 的 sortable 对表中的行进行简单的重新排序。我的拖放工作正常,我的问题是保存我的 ajax 调用的新行顺序,特别是将数据发送到我在 CakePHP 中的操作。我整天都在搜索和尝试不同的东西,但无济于事。基本上,根本没有更新数据库。

如果我使用空操作运行我的 ajax 调用,我可以获得成功:回调以提醒某些东西,我理解这意味着它成功地击中了我的操作。如果我在那里错了,请纠正我。这是我的 jQuery 和 AJAX 调用:

$('#featured-items tbody').sortable({

    cursor: 'move',
    stop:function(i) {

        $.ajax({
            type: "GET",
            url: "/admin/features/reorder",
            data: $('#featured-items tbody').sortable("serialize"),
            success: function() {
                alert($('#featured-items tbody').sortable("serialize"));
            }               
        });

    }

}).disableSelection();

我发送的数据是:

item[]=2&item[]=1&item[]=24

有人可以帮助我了解如何在控制器操作中访问我的数据吗?到目前为止,我有这个(通过查看其他示例)。我正在使用 Cake 1.3,我的模型称为 Feature。

function admin_reorder()
{
    $this->autoRender = false;

    if($this->RequestHandler->isAjax())
    {
        foreach($this->data['item'] as $order => $id)
            $this->Feature->id = $id;
            $this->Feature->saveField('priority', $order);
    }
}
4

2 回答 2

1

尝试使用 $_GET/$_POST 而不是 $this->data :

function admin_reorder()
{
    $this->autoRender = false;

    if($this->RequestHandler->isAjax())
    {
        foreach($_GET['item'] as $order => $id)
            $this->Feature->id = $id;
            $this->Feature->saveField('priority', $order);
        }
    }

}
于 2012-08-20T07:54:42.513 回答
0

据我所知,$this->data仅用于发布的数据,而在您的 AJAX 调用中,您使用的是GET方法。尝试将您的方法更改为 POST:

$('#featured-items tbody').sortable({

    cursor: 'move',
    stop:function(i) {

        $.ajax({
            type: "POST",
            url: "/admin/features/reorder",
            data: $('#featured-items tbody').sortable("serialize"),
            success: function() {
                alert($('#featured-items tbody').sortable("serialize"));
            }               
        });

    }

}).disableSelection();
于 2012-08-16T22:18:25.077 回答