jquery可排序将数组传递给php


jquery sortable pass array to php

我有一个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 时的起点