我正在为cms创建一个菜单列表脚本,但我在使用jquery时遇到了困难。 我已经获取了http://mjsarfatti.com/sandbox/nestedSortable/的来源并制作了一个PHP更新/插入脚本来更新/插入数据库中的链接。我正在使用序列化函数将数据传递给脚本。但现在我还想更新/插入li元素的名称。做这个的最好方式是什么? 我正在使用以下脚本:
foreach ($menu as $key => $value) {
// ul exists
$exists = mysql_query("SELECT * FROM menu_items WHERE id='".$key."'");
$exists = mysql_num_rows($exists);
// not a Sub menu
if($value === 'null')
{
$value = 0;
if($exists == 'null')
{
mysql_query("INSERT INTO menu_items (id, menu_id, page_id, name, parent_id, page_order)
VALUES (".$key.", 1, 1, 'Geen Naam', ".$value.", " .$y. ") ") or die (mysql_error());
}
else
{
mysql_query("UPDATE menu_items SET page_order=" . $i . ", parent_id =0 WHERE id='" . $key . "'") or die(mysql_error());
}
$i++;
$y = 1;
echo "Index = ".$key. " Parent = ".$value. " i = ".$i." \r\n";
}
else if($last === $value){
$y++;
mysql_query("UPDATE menu_items SET page_order=" .$y. ", parent_id =".$value." WHERE id='" . $key . "'") or die(mysql_error());
}
// Sub menu
else
{
$y = 1;
if($exists == 'null')
{
mysql_query("INSERT INTO menu_items
(`id`, `menu_id`, `page_id`, `name`, `parent_id`, `page_order`)
VALUES
('".$key."', '1', '1', 'Geen Naam', ".$value.", " .$y. "");
}
else
{
mysql_query("UPDATE menu_items SET page_order=" .$y. ", parent_id =".$value." WHERE id='" . $key . "'") or die(mysql_error());
}
echo "Index = ".$key. " Parent = ".$value. " i = ".$i. " y = ".$y." \r\n";
$last = $value;
}
以上用于更新菜单。
$('a[id=save]').click(function() {
serial = $('ol.sortable').nestedSortable('serialize');
$.ajax({
url: "sort_menu.php",
type: "post",
data: serial,
error: function(){ alert("theres an error with AJAX");
}
});
});
在菜单排序页面中使用。 序列化:函数(选项){
var o = $.extend({}, this.options, options),
items = this._getItemsAsjQuery(o && o.connected),
str = [];
$(items).each(function() {
var res = ($(o.item || this).attr(o.attribute || 'id') || '')
.match(o.expression || (/(.+)[-=_](.+)/)),
pid = ($(o.item || this).parent(o.listType)
.parent(o.items)
.attr(o.attribute || 'id') || '')
.match(o.expression || (/(.+)[-=_](.+)/));
if (res) {
str.push(((o.key || res[1]) + '[' + (o.key && o.expression ? res[1] : res[2]) + ']')
+ '='
+ (pid ? (o.key && o.expression ? pid[1] : pid[2]) : o.rootID));
}
});
if(!str.length && o.key) {
str.push(o.key + '=');
}
return str.join('&');
}
这是序列化部分。