我正在尝试简单地使用jQuery的可排序对表中的行重新排序。我的拖放工作正常,我的问题是保存新的行顺序我的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);
}
}
答案 0 :(得分: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);
}
}
}
答案 1 :(得分: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();