Если имена полей генерируются с такими именами, то ничего особенного делать нельзя.Просто соберите параметры формы, URL-кодирование имен и значений и POST на сервер.(Этот процесс не совсем тривиален, потому что вам нужно быть чувствительным к различным типам элементов формы и способам определения их значений, но сложность не имеет ничего общего с тем, как выглядят имена полей.)
Как примечание к терминологии, в JavaScript экземпляр Array индексируется численно.Использование имен строковых свойств - это вообще возможность объектов JavaScript, и никто не ссылается на такие вещи, как «массивы», если вы не хотите, чтобы программисты JavaScript были сбиты с толку, или чтобы дать вам педантичную инструкцию, такую как: -)
Опять же, в этом случае вы только что получили поля формы с "забавными" именами, и JavaScript не особенно заботится об этом.
edit - Вотбыстрая попытка функции сериализовать все элементы в форме:
function serialize( form ) {
var rv = [], el = null, opt = null;
form = form || document.forms[0];
function ffv( name, value ) {
return encodeURIComponent(name) + '=' + encodeURIComponent(value);
}
for (var i = 0; i < form.elements.length; ++i) {
var el = form.elements[i];
switch (el.tagName) {
case 'INPUT': {
switch (el.type.toLowerCase()) {
case 'checkbox':
case 'radio':
if (el.checked)
rv.push( ffv(el.name, el.value) );
break;
case 'text':
case 'password':
case 'hidden':
rv.push( ffv(el.name, el.value) );
break;
}
break;
}
case 'SELECT': {
opt = el.options[el.selectedIndex];
rv.push( ffv(el.name, opt.value || opt.innerText) );
break;
}
case 'TEXTAREA': {
rv.push( ffv(el.name, el.value) );
break;
}
}
}
return rv.join('&');
}
Затем вы вызовете функцию при вызове ".send ()" для вашего объекта XHR:
req.send( serialize() );
Как написано, функция по умолчанию сериализует первую форму на странице.Вы можете передать это форму явно, если это необходимо.Я полагаю, у него могут быть проблемы со старыми версиями IE;в частности, я не могу вспомнить, всегда ли «innerText» работает для <option>
элементов.
Что делает эта функция, так это просматривает каждый элемент формы, выясняет его значение (и нужно ли его включать в отправку).), а затем создайте пару имя / значение в форме
имя = значение
И имя, и значение сначала кодируются во внутреннем "ffv"() "функция, так что ваши поля будут выглядеть как
reisdata% 5BNaar% 5D = что-то
Весь список входов затем объединяется с"& "чтобы создать полный набор параметров для передачи в PHP (или любой другой серверный язык в этом отношении).
Если вы захотите попробовать jQuery, то все это будет значительно проще.Существует богатый API для операций AJAX, но в вашем случае это может быть так просто, как
$.post( url, $('form').serialize(), function( result ) { ... } );