2009-08-11 46 views
0

嘿,所有。快速瞭解我正在努力完成的任務。我有兩列數據。每列都有任意數量的同質元素。在jQuery可排序更新事件中,我想序列化所有元素在其可尊敬的列中的位置。列中的每個元素都有一個形式爲item_{id}的標識。在更新事件中,我將序列化兩列中的元素。我想知道是否有一種有效的方法來序列化col1和col2列命令並將它們組合爲單個數據庫調用。開箱即用,可排序(「序列化」)方法會返回一個格式化字符串,如:jQuery可排序在一次數據庫調用中序列化兩列?

item[]=88&item[]=1&item[]=2&item[]=90 

因此,在更新事件列1,我有:

$("#col1").sortable({ 
    handle: '.item h2', 
    connectWith: '#col2', 
    update: function(event, ui) { Update(event, ui); } 
}).disableSelection(); 

27:11第2列:

$("#col2").sortable({ 
    handle: '.item h2', 
    connectWith: '#col1', 
    update: function(event, ui) { Update(event, ui); } 
}).disableSelection(); 

,並且更新事件:

function Update(event, ui) { 
    var col1Order = $("#col1").sortable("serialize"); // Returns item[]=88&item[]=1&item[]=2&item[]=90 
    var col2Order = $("#col2").sortable("serialize"); // Returns item[]=23&item[]=10&item[]=65 
} 

是否有一種將第1列排序和第2列排序組合成一個數據庫調用的有效方法(它會將更新的位置存儲在數據庫中)?

如果我的兩個結果串連在一起,這將導致格式的字符串:

item[]=88&item[]=1&item[]=2&item[]=90&item[]=23&item[]=10&item[]=65 

有了這種形式,你無法區分哪些項目從柱來了。我思考了不同的方法。一種方法是將查詢字符串格式化爲?col1=88_1_2_90&col2=23_10_65,然後在服務器端分割col1值88_1_2_90,'_',這將給我一個值的數組(88位置0,1位置1等等) )並使用相同的方法分割col2值,但我認爲可能有一種更優雅的方式來完成此操作。

我的主要目標是避免進行兩個單獨的數據庫調用(一個用於column1,另一個用於column2)。我可以序列化col1並調用數據庫來更新col1中元素的位置,然後序列化col2並再次調用數據庫來更新col2中元素的位置,但這正是我試圖避免的。

我願意接受任何和所有的建議。提前致謝。

回答

0

如何使用嵌套數組?你應該得到這樣的事情:

item[0][]=88&item[0][]=1&item[0][]=2&item[0][]=90&item[1][]=23&item[1][]=10&item[1][]=65 

您可以輕鬆地使用數組相關的功能變平說成一個陣列,如果需要的話。

1

您可以使用解決這個問題:

jQuery('.column').sortable('serialize', {key: 'widgets[0][]'});