【问题标题】:Issue with serialised data (jQuery sortable > PHP)序列化数据问题(jQuery sortable > PHP)
【发布时间】:2016-04-26 20:11:36
【问题描述】:

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

【问题讨论】:

  • 你在哪里分配$entry
  • @BA_Webimax 在上面添加:$entry = $_POST['data'];
  • 试试$entry = $_POST['product'];
  • @BA_Webimax 如果这样做,我会收到“未定义索引”错误。
  • var_dump( $_POST ); 输出什么?

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


【解决方案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 收到的 POSTed 数据的格式。

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

【讨论】:

  • 是的,将$entry 设置为$_POST。如果我使用print_r,我会根据上面代码块的“序列化数据”部分获得输出。如果我运行foreach,我会收到以下错误:Invalid argument supplied for foreach()
猜你喜欢
  • 2011-03-02
  • 2014-08-14
  • 1970-01-01
  • 2013-04-21
  • 2013-08-03
  • 2012-09-10
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
相关资源
最近更新 更多