ソート可能な行を持つテーブルがあります。テーブルは、テーブルを変更する「displayorder」というフィールドを持つmysqlデータベースから生成されます。ユーザーが行をドラッグアンドドロップするとき、ユーザーが行をドロップするたびにAJAXを使用してそれらの変更をデータベースに送信したいと思います。
現在、AJAX呼び出しの成功部分からのconsole.log()出力を見ることができ、そこにデータを出力すると(順序)、次のようになります。
["order_1=1", "order_2=2", "order_4=3", "order_3=4"]
しかし、Firebugによると、$_POSTで渡されるものはすべて「宣言されていない」ものです。indexpage_order.phpファイルからその注文変数にアクセスするにはどうすればよいですか?
私はこのjqueryコードを持っています:
<script>
$(document).ready(function() {
var fixHelper = function(e, tr) {
var $originals = tr.children();
var $helper = tr.clone();
$helper.children().each(function(index)
{
$(this).width($originals.eq(index).width())
});
return $helper;
};
var sortable = $("#sort tbody").sortable({
helper: fixHelper,
stop: function(event, ui) {
//create an array with the new order
order = $(this).find('input').map(function(index, obj) {
var input = $(obj);
input.val(index + 1);
return input.attr('id') + '=' + (index + 1);
});
$.ajax({
type: 'POST',
url: 'indexpage_order.php',
data: order,
error: function() {
console.log("Theres an error with AJAX");
},
success: function(order) {
console.log("Saved.");
console.log(order);
}
});
return false;
}
});
});
</script>
indexpage_order.phpに含まれるもの:
if(isset($_POST) ) {
while ( list($key, $value) = each($_POST) ) {
$id = trim($key,'order_'); //trim off order_
$sqlCommand =
"UPDATE indexpage
SET displayorder = '".$value."'
WHERE id = '".$id."'";
$query = mysqli_query($myConnection,$sqlCommand) or die (mysqli_error($myConnection));
$row = mysqli_fetch_array($query);
}
}