需要一种方法让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!
答案 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毫秒),其中包含更新功能那里。
希望这会有所帮助:)