ユーザーはリストオブジェクトを希望どおりに並べ替えてから、[保存]リンクをクリックすると、順序がデータベースに保存されます(URLを使用)。ユーザーが順序を変更する前のURLは、index.php?type = list&action = saveNewListOrder&listId=24のようになります。
ユーザーがリストオブジェクトの順序を変更すると、以下の関数が実行され、URLとマージされるリストオブジェクトの文字列が作成されます。
ユーザーがリストオブジェクトを2回目に移動したときに、取得されたURLにリストオブジェクトを含む文字列が既に含まれていることを除いて、すべてが正常に機能します(最後の移動以降)。ユーザーがリストオブジェクトを移動するたびに、URLが大きくなります。
3回目の移動後、URLは次のようになります。
index.php?type=list&action=saveNewListOrder&listId=170&listOrder=772.773.775.774
.776&listOrder=772.775.773.774.776&listOrder=775.773.772.774.776
私は(URLの最初の部分を抽出するために)部分文字列を使用することと、毎回取得されて変更されない非表示フィールドにURLを配置することも考えました。これらのソリューションはどちらも不必要に複雑に感じられるため、より洗練されたソリューションが必要です。
$('#listElements').sortable({
update: function(event, ui) {
var order = '';
var i = 0;
$('.listObject li').each(function (e) {
if (i != 0) {
order += '.';
}
order += $(this).attr('id');//.push($(this).attr('id'));
i +=1;
});
var url = $('#newOrder').attr("href");
url += "&listOrder=" + order;
$('#newOrder').attr('href',url);
}
});