0

所以我有两个可排序的列表。我想通过 ajax 将一个列表中的所有 id 发送到 php 脚本。这个列表是动态的,id 的数量会发生变化。我只是想在那里收集所有ID并将它们发送出去。

这是我到目前为止所得到的,这有点工作 - item_id var只抓住第一个,我想要它们全部 - 如果它全部在一个用逗号/空格(无论如何)分隔的字符串中,或​​者一个新的键= >每个人的价值……以最简单的为准。

“roomID”是 UL/Dialog 的唯一标识符 - 可以正常工作。

$( 'div.edit-dialog-'+roomID ).dialog({ 
            autoOpen: false,
            height: 500,
            width: 550,
            modal: true,
            position:['middle','middle'],
            draggable: true,
            resizable: true,
            buttons: {
                Cancel: function() {
                    $( this ).dialog( "close" );
                },
                Save: function() {
                    $.ajax({
                        type: "POST",
                        data: {
                            room_id: roomID,
                            item_id: $("#sortable1-"+roomID+" li").attr("id")
                        },
                        url: "index.php?controller=AdminRegion&action=test",
                        success: function (res) {
                            $("#content").html(res);
                            $("#tabs").tabs();
                        }
                    });
                }

            },
                close: function() {
                    allFields.val( "" ).removeClass( "ui-state-error" );
                }
        });

结果:

array(2) { ["room_id"]=> string(1) "1" ["item_id"]=> string(1) "2" }

我认为这是语法问题,只是不知道如何。我的第二个猜测是循环?

4

1 回答 1

1

$("#sortable1-"+roomID+" li")具有所有<li />元素,因此您必须遍历它们以获取每个元素的 id。

如果逗号分隔的列表足够好,您可以使用以下命令获取此列表

$("#sortable1-"+roomID+" li").map(function() {
    return this.id
}).get().join()

话虽如此,您的保存方法可以重写为

Save: function() {
    var item_ids = $("#sortable1-"+roomID+" li").map(function() {
        return this.id;
    }).get().join();

    $.ajax({
        type: "POST",
        data: {
            room_id: roomID,
            item_ids: item_ids
        },
        url: "index.php?controller=AdminRegion&action=test",
        success: function (res) {
            $("#content").html(res);
            $("#tabs").tabs();
        }
    });
}
于 2013-02-13T20:20:09.947 回答