У меня есть форма с большим количеством полей формы (12 xn строк). Первое поле в каждой строке (которое представляет собой продукт) – это флажок, который напоминает это:
<input type="checkbox" class="ids" name="ids[]" value="1">
Значение каждого флажка уникально.
То, что я пытаюсь сделать, – отправить проверенные значения скрипту PHP для обработки через Ajax. У меня возникают проблемы с получением идентификаторов на сервере должным образом. Я попытался использовать несколько вещей, в том числе:
$('.ids:checked').serialize();
а также
var ids = []; $('.ids:checked').each(function(i, e) { ids.push($(this).val()); }); $.ajax({ url: "stub", type: "post", dataType: "json", data: { 'ids[]': 'ids[]='+ids.join('&ids[]=') }, success: function(data) { // stub } });
Но это приводит к получению этого на сервере:
ids[]=104&ids;[]=105
Я мог бы сериализовать всю форму и отправить ее, но это может привести к большому количеству отправляемых данных, которые не будут использоваться.
Как отправить на сервер только значения delete[]
? Идеально в том смысле, что PHP распознает его как массив?
(Я работал над этим, отправив идентификаторы в виде строки с разделителями-запятыми, но хотел бы знать, как это сделать, поскольку я потратил достаточно времени, пытаясь понять это).
Это отлично сработало для меня
<input type="checkbox" class="ids" name="ids[]" value="2"> <input type="checkbox" class="ids" name="ids[]" value="3"> <input type="checkbox" class="ids" name="ids[]" value="4"> <input type="checkbox" class="ids" name="ids[]" value="5"> <input type="checkbox" class="ids" name="ids[]" value="6"> <div id="response"></div> <button id="submit">Submit</button> <script> $('#submit').click(function() { $.ajax({ url: "stub.php", type: "post", data: $('.ids:checked').serialize(), success: function(data) { $('#response').html(data); } }); }); </script>
Затем на stub.php
var_dump($_POST);
Почему бы вам не отправить идентификатор как строку, разделенную запятой. Вы можете разделить его на стороне сервера и применить связанную с ним логику.
var ids = []; $('.ids:checked').each(function(i, e) { ids.push($(this).val()); }); $.ajax({ url: "stub", type: "post", dataType: "json", data: { 'ids[]': ids.join() }, success: function(data) { // stub } });