Есть строки таблицы(строй может быть много)
<tr class="actors_list_row">
<td align="center">
<input type="text" name="actor[0][actor_name]" class="input-actor" value="" size="70" />
<input type="hidden" name="actor[0][actor_id]" class="input-actor-id" value="" />
</td>
<td align="center"><input type="text" name="actor[0][role]" class="input-role" value="" size="70" /></td>
<td align="center">
<input type="text" name="actor[0][dub_name]" class="input-dub" value="" size="70" />
<input type="hidden" name="actor[0][dub_id]" class="input-dub-id" value="" />
</td>
<td>
<a href="javascript:void(0);" class="del_row"><img src="/assets/images/icons/delete.png" border="0" /></a>
</td>
</tr>
Нужно получить массив вида
var actors = {"actors": {
"row1": { "a1":"b1", "c1":"d1", "e1":"f1", "g1":"h1", "i1":"j1" },
"row2": { "a2":"b2", "c2":"d2", "e2":"f2", "g2":"h2", "i2":"j2" }
}};
Пока остановился на этом
var arr = {"actors": {}};
var elems = {};
$.each($('.actors_list_row'), function(k, v){
$.each($(this).find('input'), function(key, value){
elems[$(this).prop('name')] = $(this).val();
return elems;
});
arr.actors['row_'+k] = elems;
});
Проблема в том что данные дублируются. Т.е. получается
var actors = {"actors": {
"row1": { "a1":"b1", "c1":"d1", "e1":"f1", "g1":"h1", "i1":"j1", "a2":"b2", "c2":"d2", "e2":"f2", "g2":"h2", "i2":"j2" },
"row2": { "a1":"b1", "c1":"d1", "e1":"f1", "g1":"h1", "i1":"j1", "a2":"b2", "c2":"d2", "e2":"f2", "g2":"h2", "i2":"j2" }
}};
Вопрос номер 2.
Можно ли для временного хранения использовать $.data() для input'а формы или лучше пересобирать в json-строку и сохранять как value поля?
Как лучше преобразовать такой массив в строку json дабы потом передать на сервер обычным POST?
PS! Пробовал json2, но массив корявится и в результате {name:"a1", value:"b1"...}/ Мне же важно сохранить имена полей как ключи.