0

だから私は2つのソート可能なリストを持っています。1つのリストからすべてのIDをajax経由でphpスクリプトに送信したいと思います。このリストは動的であり、IDの数は変化します。そこにすべてのIDを集めて送信したいだけです。

これが私がこれまでに得たものです。これはある程度機能します-item_idvarは最初のものだけを取得します、私はそれらすべてが欲しいです-すべてがコンマ/スペース(何でも)で区切られた1つの文字列であるか、新しいkey=であるかは関係ありません>それぞれの値...最も簡単な方。

'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" }

構文の問題だと思いますが、方法がわかりません。私の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 に答える