jquery可排序更新只能工作一次吗?

时间:2009-09-15 06:24:53

标签: php jquery jquery-ui-sortable

需要一种方法让div中的元素显示,但是当我使用ajax发送数据到list.php.it时无法工作?

PHP:

<?php
mysql_connect('localhost','user','password');
mysql_select_db('fruit');
$days = 3;
for($i=1;$i<=$days;$i++)
{
?>



<ul id="sortable">
    <?php
    $sql = "select * from menu where columnNo = '$i' order by orderNo ASC";
    $result= mysql_query($sql);
    //$row=mysql_fetch_assoc($result);
    //print_r($row);
    while($row=mysql_fetch_assoc($result))
    {
        echo '<li id="list_' . $row['id'] . '">' . $row['title'] . "</li>\n";//
    }

    ?>
    </ul>

<?php
}
?>

jquery的:

$(function(){
     $("ul").sortable({
        connectWith:"ul",
        update:function()
        {           
            serial = $("ul").sortable("serialize");
            $.ajax({
                data: serial,                
                url:"list.php",
                type:"post",
                error:function(){
                    alert("Error!");
                },
                success:function(data){
                    $("#serverResponse").html(data);
                }
            });
            //alert(serial);
        }
     });

    $("#sortable").disableSelection();


});

list.php的

<?php

mysql_connect('localhost','root','xingxing');
mysql_select_db('fruit');

$list = $_POST['id'];

for($i=0;$i<count($menu);$i++)
{


    $sql =  "update menu set orderNo= '$i' where id = '$menu[$i]'";
    mysql_query($sql);
}

?>

但是,list.php不起作用。我不知道为什么有人可以帮助我吗? THX!

1 个答案:

答案 0 :(得分:1)

不确定这是否有帮助,但是您尝试更新每个重新订购事件(这是否真的有必要?)。

在更新之后的几秒钟空闲时间之后使用javascript超时更新可能是明智的。我个人使用这种方法,它使事情运行得更顺畅。

在你的jQuery .sortable()设置中添加以下内容:

start: function(event, ui){
    clearTimeout(allow_update);
},
update: function(event, ui){
    allow_update = window.setTimeout(UpdateOrdering, 3000);
}

然后在某处添加 var allow_update = null; ,并在超时到期时调用 UpdateOrdering 函数(在我的情况下为3000毫秒),其中包含更新功能那里。

希望这会有所帮助:)