2013-02-13 4 views
0

Итак, у меня есть два сортируемых списка. Я хочу отправить все идентификаторы из одного списка в php-скрипт через ajax. Этот список является динамическим, и количество идентификаторов изменится. Я просто хочу собрать все идентификаторы и отправить их.ajax post несколько элементов 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 /> элементов, поэтому вам придется перебирать их, чтобы получить идентификатор каждого из элементов.

Если список через запятую достаточно хорошо, вы можете получить этот список с

$("#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

+0

@JoeReed Добро пожаловать :) – Andreas