我遇到了序列化Jquery功能的问题。 拳头,我用PHP脚本创建我的li元素,我的数据写在我的数据库中(带有“id”,“contenu”,“position”)并在我的html中捕获它:
<article>
<ul id="columns">
<?php
$req01=mysql_query("SELECT * FROM mytable ORDER BY id DESC");
$i=0;
while ($res01=mysql_fetch_array($req01)){
$i++;
echo '
<li class="column" id="listItem_'.$res01["position"].'" draggable="true">
<p>'.$res01["contenu"].'</p>
</li>';
}
?>
</ul>
</article>
这是我的剧本 $(document).ready(function(){
$("#columns").sortable({
column : '.column',
update : function () {
var order = $('#columns').sortable('serialize');
$("#info").load('structure-reform.php?'+order);
//alert("Data Loaded: " + order);
}
});
});
</script>
在这里,当我的订单正在改变时,我更新我的数据库的方式
foreach ($_GET['listItem'] as $position => $item) :
$list[] = "$position, $item";
$req03=mysql_query("UPDATE mytable SET position='".$position."' WHERE id='".$item."'");
$result = mysql_query($req03);
endforeach;
问题是,当我重新加载我的页面时,我的列表没有以正确的方式排序...我怎么能保持我的列表在最后的顺序? 谢谢!
答案 0 :(得分:0)
您要么想要在PHP中保存订单参数 - 将其存储在$ _SESSION中,或者在用户的计算机上设置一个cookie并检索它以进行排序。
答案 1 :(得分:0)
你的逻辑不正确。
用这个替换你的javascript:
$("#columns").sortable({ update: function() {
var order = $(this).sortable("serialize");
$.post("structure-reform.php", order);
}
});
用这个
替换你的列表html<li class="column" id="listItem_'.$res01['id'].'" draggable="true" rel="'.$perso.'">
<p>'.$res01["contenu"].'</p>
</li>';
用这个
替换你的while循环$listingCounter = 1;
foreach ($_POST['listItem'] as $recordIDValue) {
$query = "UPDATE structure SET position = " . $listingCounter . " WHERE id = " . $recordIDValue;
mysql_query($query) or die('Error, insert query failed');
$listingCounter = $listingCounter + 1;
}
echo 'If you refresh the page, you will see that records will stay just as you modified.';
答案 2 :(得分:0)
为什么你不使用$ .ajax()使用jquery ajax?可能是serialize()有问题,你试过这个吗?
$("#columns").sortable({
column : '.column',
update : function () {
var order = $(this).sortable('serialize');
$.ajax({
url : 'structure-reform.php',
type: 'GET',
data: order,
success:function(res){
alert('Data Loaded '+res);
}
});
}
});
和第一次使用fot时,你应该从ajax请求中调试参数,使用php非常简单
<?php
print_r($_GET);
?>
然后当你知道那里给出了什么参数时你可以做其余的事情