4

我正在为 jQuery、HTML5 Sortable http://farhadi.ir/projects/html5sortable/使用一个简洁的排序插件,但还没有找到一种理想的方法来序列化数据以作为 AJAX POST 请求发送(以更新 DB)。

HTML

<ul class="sortable">
    <li data-id="1">One</li>
    <li data-id="2">Two</li>
    <li data-id="3">Three</li>
    <li data-id="4">Four</li>
    <li data-id="5">Five</li>
</ul>

jQuery

$('ul.sortable').sortable().bind('sortupdate', function() 
{
   var data = ??;  // serialize all data-id's ... this is my problem

   $.post('/sortupdate.php',data,function(){ // PHP script sets new order in DB
       alert('updated');
   });
});

所以我想要发生的是,当我将 LI 项目拖到新位置时,sortupdate事件应该触发函数并发送 data-id 属性值的新顺序。我目前的想法是遍历 LI 并将属性值添加到数组中。有没有更聪明的方法可以做到这一点,或者,最有效的循环方式是什么?(我主要是你认识的后端人员)。谢谢!

4

1 回答 1

9

由于该插件没有内置序列化方法,因此您必须手动完成。

var dataIDList = $('ul.sortable li').map(function(){ 
    return $(this).data("id");
}).get().join(",");

(这基本上就是你最后描述的,它循环并创建一个列表。)

现在您可以将其发布为列表:

$.post(url,{ idlist: dataIDList }, completeandler);

您也可以将其发布为数组,只需删除.join(",");

于 2012-11-27T19:36:15.490 回答