使用HTML5sortable为AJAX序列化数据

时间:2012-11-27 19:23:34

标签: jquery sorting

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

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并将属性值添加到数组中。有没有更聪明的方法来做这个,或者,最有效的循环方式是什么? (我主要是你知道的后端人)。谢谢!

1 个答案:

答案 0 :(得分:9)

由于插件没有内置的序列化方法,因此您必须手动执行此操作。

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

(这基本上就是你在最后描述的内容,它会遍历并创建一个列表。)

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

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

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

即可