序列化数据(jQuery 可排序> PHP)的问题


Issue with serialised data (jQuery sortable > PHP)

我在jQuery UI中使用.sortable('serialize')将可排序项目的更新位置传递给数据库。我正在努力理解的是我如何操作序列化数据以更新数据库中的位置。使用foreach似乎不起作用。

jQuery:
-------
$('#sort').sortable({
    update: function(event, ui) {
                var data = sortBlock.sortable('serialize');
                updatePos(data);
            }
});
function updatePos(data) {
    ...     
    request = $.ajax({
        url:        url,
        method:     'post',
        data:       data
    });
    ...
}
PHP:
----
$entry = $_POST['data'];
$dbc = mysqli_connect(<connects>);
$i = 0;
foreach ($entry as $value) {
    $insert = 'UPDATE <table> SET <column> = '.$i;
    $i++;
}
Serialised data:
---------------
product[]=0&product[]=1...

在您的 PHP 代码中,您是否将$entry设置为$_POST?PHP 中一个很好的调试函数是 print_rforeach应该按预期工作:

foreach($_POST['product'] as $value){
    $insert = 'UPDATE <table> SET <column> = '.$i;
    $i++;
}

PHP 中一个很好的调试函数是 print_r 。尝试向 PHP 代码添加print_r($_POST),以查看 PHP 收到的POST ed 数据的格式。

您可以使用 PHP 的 parse_str 方法将此字符串解析为其组成变量。 例如,parse_str($_POST,$output);将在$output['product']中创建数组。或者你可以尝试使用.sortable('toArray');而是在前端正确格式化数据