我自己也遇到过这个问题。在论坛上发布了一个解决方案,可以通过表单(表单解决方案)保存列表。我个人更喜欢 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 注入等)。您也可以删除示例中提供的其他功能,因为您不需要它们。不要忘记更改 JavaScript 中的 POST URL ;) 祝你好运!