Есть форма, где идут текстовые input-ы с разными name и input-ы, которые появляются динамически с одинаковыми name.
Проблема в том, что когда формируется массив для передачи POST посредством AJAX, в массив попадает только последнее значение поля, где name одинаковые:
Поля формы такие:
<form name="zayavka" method="post" enctype="multipart/form-data">
<input type="text" name="FIO" placeholder="Иван">
<input type="text" name="GOROD" placeholder="Москва">
<input id="file-doc308" type="hidden" name="FOTO[]" value="308">
<input id="file-doc309" type="hidden" name="FOTO[]" value="309">
<input id="file-doc310" type="hidden" name="FOTO[]" value="310">
<div id="error"></div>
<button class="btn btn-primary" type="submit">Отправить</button>
</form>
Ajax скрипт передачи данных вот такой:
$('form[name=zayavka]').submit(function () {
var o = new Object();
$(this).find('input, textarea').each(function () {
o[$(this).attr('name')] = $(this).val();
});
$.post('/bitrix/templates/site/js/form.php', o,
function (data) {
if (data == '1') {
document.getElementById("error").innerHTML = "Спасибо за Вашу заявку! Она направлена на модерацию.";
$('.md-close').click();
}
else document.getElementById("error").innerHTML = "Произошла ошибка! Повторите попытку позже.";
});
//}
return false;
});
Как я понимаю, проблема в этой строке:
o[$(this).attr('name')] = $(this).val();
Видимо, происходит замена друг другом данных с одинаковым name="FOTO[]", вместо того, чтобы собирать их в массив.
Массив выводится вот таким, где указан только последний файл:
Array
(
[FIO] =>
[GOROD] =>
[P30] => Array
(
[0] => 310
)
)
Подскажите, пожалуйста, кто разбирается в AJAX, как правильно обработать поля с одинаковыми name, чтобы в пост формировался массив, а не брался только последний файл. Спасибо!