jQuery UI的serialize方法查看元素的ID並創建一個適用於發回控制器的序列化哈希字符串。默認情況下,您的ID必須採用以下格式:
<li id="setname=number"></li>
<li id="setname-number"></li>
<li id="setname_number"></li>
所有這些都將導致:
"setname[]=number&setname[]=number"
如果序列化方法返回一個空字符串,那麼你可能是沒有目標正確的可排序元素,它們尚未通過sortable()調用初始化,或者ID的格式不正確。需要注意的是它可以修改jQuery UI的序列化通過將一個自定義的「鑰匙」,「屬性」的元素的方式,和「表達」參數序列化方法:
var sortedList = $('ul.sortableList').sortable('serialize', { attribute: 'itemid', key: 'foo[]', expression: /(.+)=(.+)/ });
當然,你可以隨時滾動您自己的序列化方法,並手動將更新後的LI位置傳遞到您的控制器:
var positions = new Array();
$sortableLis.each(function() {
var sortableId = $(this).find('input[id$=SortableID]').val();
var sortOrder = $sortableLis.index($(this));
var SortablePosition = {
ID: encodeURIComponent(sortableId),
SortOrder: sortOrder
};
positions.push(SortablePosition);
});
$.ajax({
type: 'POST',
url: '/UpdateSortablePositions',
data: "{ positions: '" + $.toJSON(positions) + "' }",
contentType: 'application/json; charset=utf-8',
dataType: 'json'
});
這樣做的竅門!感謝Derek的幫助。 – 2012-07-31 21:21:44
不客氣! – 2012-07-31 21:46:49