Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обработка массива элементов формы и сохранение (https://javascript.ru/forum/jquery/24934-obrabotka-massiva-ehlementov-formy-i-sokhranenie.html)

Viper 19.01.2012 16:04

Обработка массива элементов формы и сохранение
 
Есть строки таблицы(строй может быть много)

<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"...}/ Мне же важно сохранить имена полей как ключи.


Часовой пояс GMT +3, время: 21:06.