0

我正在使用 jQuery sortable() 对数据库中的图像进行排序。HTML如下。

<h2>Revision 1</h2>

<ul class='sortable'>
<li class='sortPhotos' id='item_249745' >
     <img src="../data/gallery/13387/images/album/1650519801.jpg"/>
     <p>1650519801.jpg</p>
</li>
<li class='sortPhotos' id='item_249744' >
     <img src="../data/gallery/13387/images/album/704633205.jpg"/>
     <p>704633205.jpg</p>
</li>
</ul>

<h3>Revision 2</h3>

<ul class='sortable'>
<li class='sortPhotos' id='item_518811' >
     <img src="../data/gallery/13387/images/album/001.jpg"/>
     <p>001.jpg</p>
</li>
<li class='sortPhotos' id='item_518812' >
     <img src="../data/gallery/13387/images/album/003.jpg"/>
     <p>003.jpg</p>
</li
</ul>

JS

<script>

    $(".sortable").sortable({stop:function(i) {
            $.ajax({
                type: "GET",
                url: "../albumUploader/queries/sort.php",
                data: $(".sortable").sortable("serialize")
            });
        },
        opacity:1.0
    });    
</script> 

最后是 SQL

foreach($_GET['item'] as $key=>$value) {

    mysql_query("   UPDATE galleryimage
                    SET sort = '{$key}'
                    WHERE id = '{$value}'  
                   ");
}

上述示例的问题——第一个修订版是唯一在数据库中实际排序的修订版。其他修订版不是。从 Chrome Web 开发人员扩展程序中监控网络来看,这两个列表都发送到数据库,但第二个列表没有写入。关于这个有什么想法吗?

4

2 回答 2

0

每个可排序的对象都需要有自己的唯一 ID。我解决了它:

ul id='sortable_" . $count ."'
$count++;

$(".revisionNum").each(
        function(e) {
        num = e + 1;
        $("#sortable_" + num).sortable(
            {stop:function(i) {
                serial = $("#sortable_"  + num).sortable("serialize");
                $.ajax({
                    type: "GET",
                    url: "../albumUploader/queries/sort.php",
                    data: serial
                });
            },
            opacity:1.0
        });    
    });
于 2012-07-02T20:33:21.887 回答
0

一种解决方案是一次只向服务器发送一个列表。这可以通过从而$(this)不是从发送数据来完成$(".sortable")

$(".sortable").sortable({stop:function(i) {
        $.ajax({
            type: "GET",
            url: "../albumUploader/queries/sort.php",
            data: $(this).sortable("serialize")
        });
    },
    opacity:1.0
});
于 2012-07-02T20:34:32.877 回答