我有一个jQuery可排序列表。最终,我想要的是一个简单的列表id的php数组。我正在尝试获取数组中的id和位置,并将其添加到数据库中。我希望用户能够更改列表的顺序,只要他们愿意,当他们对顺序满意时,单击按钮提交。
我见过很多可排序列表的例子,每次切换项目位置时都会更新,但这不是我想要的。
这是简化的。id将使用php动态生成。
<body>
<form>
<ul id="sortable-1">
<li id="order1">Item 1</li>
<li id="order2">Item 2</li>
<li id="order3">Item 3</li>
<li id="order4">Item 4</li>
<li id="order5">Item 5</li>
</ul>
<input type="button" value="Submit" onclick="go">
</form>
</body>
jQuery,它将使列表可排序,并在每次更改订单时发布,而不是我想要的。我需要一个名为go with ajax的单独函数。另外,.sortable('toArray').toString()
是我想要的("serialize")吗?它似乎构成了一个简单的id值数组。
$(function(){
$("#sortable-1").sortable({
update: function(event, ui){
var operationOrder = $(this).sortable('toArray').toString();
$ajax({
data: operationOrder,
type: 'POST',
url: 'order.php'
});
}
});
});
php,它将保存一个id值数组:
$order = array();
$string = $_POST['data'];
$order = explode(",", $string);
谢谢你的帮助。对于经验丰富的程序员来说,这可能很简单,但我已经做了好几天了。。。
为了用$_POST['data']
接收数据数组,您需要将数组作为关键字data
的值发送。另外请注意,您不应该将数组字符串化。jQuery将为您正确地对其进行形式编码。
$ajax({
data:{data: operationOrder},// don't need to stringify this array
type: 'POST',
url: 'order.php'
});
现在要进行验证,请学习如何在浏览器控制台的"网络"选项卡中检查ajax请求,您将确切地看到发送的内容。浏览器控制台(F12)始终是调试ajax 时的起点