我在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...
答案 0 :(得分:0)
在您的PHP代码中,您是将$entry
设为$_POST
吗? PHP中用于此的良好调试功能是print_r
。 foreach
应按预期工作:
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;);而是在前端正确格式化数据