Я тоже столкнулся с проблемой. На форуме размещено решение для сохранения списка через форму ( Форма решения ). Лично я предпочитаю AJAX, поэтому я написал свое собственное решение. Чтобы решить вашу проблему AJAX, вам нужно изменить код следующим образом:
Изменение:
$('ol.sortable').nestedSortable({
disableNesting: 'no-nest',
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
maxLevels: 3,
opacity: .6,
placeholder: 'placeholder',
revert: 250,
tabSize: 25,
tolerance: 'pointer',
toleranceElement: '> div'
});
В
$('ol.sortable').nestedSortable({
disableNesting: 'no-nest',
forcePlaceholderSize: true,
handle: 'div',
helper: 'clone',
items: 'li',
maxLevels: 3,
opacity: .6,
placeholder: 'placeholder',
revert: 250,
tabSize: 25,
tolerance: 'pointer',
toleranceElement: '> div',
update: function () {
list = $(this).nestedSortable('toHierarchy', {startDepthCount: 0});
$.post(
'http://www.domainname.com/ajax/ajax.php',
{ update_sql: 'ok', list: list },
function(data){
$("#result").hide().html(data).fadeIn('slow')
},
"html"
);
}
});
Затем вам нужно создать страницу ajax.php, где вы обрабатываете данные:
<? if (!empty($_REQUEST["list"]) && !empty($_REQUEST["update_sql"])) {
if ($_REQUEST["update_sql"] = 'ok') {
if (!empty($_REQUEST["list"])) {
$list = $_REQUEST["list"];
foreach ($list as $key => $value) {
mysql_query("UPDATE categories SET order = '" . $key . "' WHERE id = '" . $value['id'] . "'");
}
echo '<span class="success">Successfully updated.</span>';
}
} } ?>
PHP-код может быть улучшен (для проверки инъекций MySQL и т. Д.). Вы также можете удалить дополнительные функции, представленные в примере, так как они вам не нужны. Не забудьте изменить POST URL в JavaScript;) Удачи!