我在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_r
。 foreach
应该按预期工作:
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');而是在前端正确格式化数据