問題は、シリアル化を通過するID番号を取得していないことだと思いますか? 私がphpから得ている応答は次のようになります:
Array
(
[sort1]=> menu[]=1&menu[]=2&menu2[]=3
[sort2]=> menu2[]=4
)
メニュー[0]、メニュー[1]などのように、各メニュー項目に番号を付けるべきではありませんか?
以下は私のコードです..
$(function()
{
$("#sortable1, #sortable2").sortable(
{
connectWith: '.connectedSortable',
update : function ()
{
$.ajax(
{
type: "POST",
url: "sort_menu.php",
data:
{
sort1:$("#sortable1").sortable('serialize'),
sort2:$("#sortable2").sortable('serialize')
},
error: function(res)
{
alert("theres an error "+ res);
},
success: function(res)
{
alert("theres a response "+ res);
}
});
}
});
});
PHP:
$result = mysql_query("SELECT * FROM menu WHERE crew='1' ORDER BY sort ASC") or die(mysql_error());
while($row = mysql_fetch_array($result)) {
echo "<li id=\"menu_".$row['id']."\">".$row['title']."</li>\n";
}
および ajax 情報を受け取るフォーム
print_r($_POST);
$menu = $_REQUEST['sort1'];
for ($i = 0; $i < count($menu); $i++) {
mysql_query("UPDATE menu SET sort=" . $i . ", list='1' WHERE id='" . $menu[$i] . "'") or die(mysql_error());
}