Johnny Sortable: How To Use Sort.sortable("serialize");
I use: http://johnny.github.io/jquery-sortable/ With this plugin you can change the order of a list or the order of table rows (thats my case). For example with the mouse you drag
Solution 1:
To send your new order via $.POST just do:
var dataToSend = sort.sortable("serialize").get();
$.post("ajax-sort.php", {test:dataToSend}, function(data){});
On ajax-sort.php you recieve something like:
[test] => Array
(
[0] => Array
(
[children] => Array
(
[0] => Array
([id] => 39)
[1] => Array
([id] => 37)
[2] => Array
(
[subContainer] => false
[id] => 38
)
... snip ...
)
)
)
)
If you want to change the structure of this array, override the serialize() method in the plugin.
You will find an example of a customized serialize() method here: http://johnny.github.io/jquery-sortable/#limited-target
Solution 2:
If the table rows are pre-sorted using that plugin, you can iterate over the rows and add their id's to an array.
onDrop: function ($item, container, _super) {
var myObject = sort.sortable("serialize");
var sorted = [];
$('tr').each(function () {
sorted.push($(this).data('id'));
});
$.post('myurl.php', {blah: sorted}, function(){});
});
I also wrapped blah
in curly braces to indicate that it is an object. Otherwise you would have gotten a syntax error.
Solution 3:
I have created a script which will sort and convert output into json format :
function start_sorting(classvariable){
var output=[];
var parent="";
var selector=$("."+classvariable+" li");
selector.each(function(key,value){
var id=selector.eq(key).attr('id');
var index=key;
if(selector.eq(key).parent().parent().parent().find(">li").length==0){
parent='0';
}else{
parent=selector.eq(key).parent().parent().parent().find(">li").attr('id');
}
output.push({id:id,index:index,parent:parent});
});
console.log( JSON.stringify(output));
}
Post a Comment for "Johnny Sortable: How To Use Sort.sortable("serialize");"