我正在为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并将属性值添加到数组中。有没有更聪明的方法来做这个,或者,最有效的循环方式是什么? (我主要是你知道的后端人)。谢谢!
答案 0 :(得分:9)
由于插件没有内置的序列化方法,因此您必须手动执行此操作。
var dataIDList = $('ul.sortable li').map(function(){
return $(this).data("id");
}).get().join(",");
(这基本上就是你在最后描述的内容,它会遍历并创建一个列表。)
现在您可以将其发布为列表:
$.post(url,{ idlist: dataIDList }, completeandler);
您也可以将其发布为数组,只需删除.join(",");