Привет всем. Краткий обзор того, что я пытаюсь сделать. У меня есть два столбца данных. Каждый столбец имеет произвольное количество однородных элементов. В событии сортируемого обновления jQuery я хочу сериализовать расположение всех элементов в их респектабельной колонке. Каждый элемент в столбцах имеет идентификатор вида item_{id}
. В событии обновления я буду сериализовать элементы в обоих столбцах. Я хотел знать, существует ли эффективный способ сериализации порядков столбцов col1 и col2 и объединения их в один вызов базы данных. Из коробки метод sort («serialize») возвращает форматированную строку, например:
item[]=88&item[]=1&item[]=2&item[]=90
Итак, в событии обновления для столбца 1 у меня есть:
$("#col1").sortable({
handle: '.item h2',
connectWith: '#col2',
update: function(event, ui) { Update(event, ui); }
}).disableSelection();
И для столбца 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 с помощью того же метода, но я подумал, что может быть более элегантный способ сделать это.
Моя главная цель - избежать двух отдельных вызовов базы данных (один для столбца 1 и другой для столбца 2). Я мог бы сериализовать col1 и сделать вызов в базу данных, обновляя позиции элементов в col1, а затем сериализовать col2 и сделать еще один вызов в базу данных, обновив позиции элементов в col2, но это то, чего я пытался избежать.
Я открыт для любых предложений. Заранее спасибо.