序列化数据问题(jQuery sortable> PHP)

时间:2016-01-20 19:51:06

标签: php jquery jquery-ui jquery-ui-sortable

我在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...

1 个答案:

答案 0 :(得分:0)

在您的PHP代码中,您是将$entry设为$_POST吗? PHP中用于此的良好调试功能是print_rforeach应按预期工作:

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

PHP中的良好调试功能是print_r。尝试将print_r($_POST)添加到PHP代码中,以查看PHP收到的POST ed数据的格式。

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