jQuery Ajax 可排序在序列化后将对象中的数据作为键值传递


jquery ajax sortable pass data in object as key value after serialize

我正在使用可排序的jquery upi通过php对列表进行重新排序,我得到的id是这样的:

var ids = $('#sort1').sortable('serialize');

在 ajax 调用中update时,它在 ajax 调用中传递data时工作正常,如下所示:

data: ids

然后像这样进入我的 php 脚本(注意单数 id):

$getids = $_POST['id'];

所有这些都工作正常,但是我想在对象内部传递数据,因为我还想传递其他东西,但它似乎不起作用。

我试过了:

data: {
    id: ids
},

然后我得到这个php错误:

 Warning: Invalid argument supplied for foreach() in C:'wamp'www'sortable'sort.php on line 8

我还尝试将$getids = $_POST['id'];更改为$getids = $_POST['ids'];但随后我得到了 unidented 索引和无效的参数错误。

如何将对象内部的ids作为键值对传递?

编辑:

福瑞克代码

$count = 1;
foreach ($getids as $key => $id) {
    $q = "UPDATE titles SET sorting='$count', parent_id='1' WHERE id='$id'";
    $r = mysqli_query($dbc, $q);
    if ($r) {
        echo 'done <br>';
    } else {
        echo 'problem <br>' . mysqli_error($dbc);
    }
    $count++;
}

我遇到了这个问题并遇到了这篇文章,因为它不包含任何解决问题的代码。我终于找到了一个适合我的解决方案......

在我的 Ajax 请求中,我使用以下方法将可排序的 UI 转换为数组:

var data = $(this).sortable('toArray');

然后按以下方式发送 Ajax 请求:

data: { sectiononelink: data, currentUserID: user_id },

然后因为可排序到数组函数给了我一个字符串,例如 sectionone-asectionone-bsectionone-csectionone-d 等......我只想要字符串的"sectionone-"部分后面的字母,因为我希望使用字母 a - z 在我的 html 中对列表进行排序。

在我的PHP中,我使用了一个foreach循环,其中包含:

$profileLinkOrder = "";
foreach($_POST['sectiononelink'] as $value)
{
    $profileLinkOrder .= substr(strstr($value, "-"), 1);
}

然后变量$profileLinkOrder会像 abcdefg 等一样出现......取决于我在 HTML 页面上的可排序 UI 列表的方式。

这对我有用,所以我希望其他人可以使用它来解决这个问题。我在网上找不到任何其他解决方案。让我知道这是否有帮助。