2013-02-13 61 views
0

所以我有兩個可排序的列表。我想通過ajax將所有ids從一個列表發送到一個php腳本。這個列表是動態的,ID的數量將會改變。我只想收集所有的ID併發送出去。ajax發佈多個li元素

這裏是我到目前爲止,有些作品 - 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" } 

我覺得它的語法的問題,只是不知道怎麼辦。我的第二個猜測會是一個循環?

回答

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(); 
     } 
    }); 
} 
+0

工作就像一個魅力。我猜想這簡直太複雜了。 :)謝謝,安德烈亞斯。 – Joe 2013-02-13 20:23:01

+0

@JoeReed不客氣:) – Andreas 2013-02-13 20:23:51