Одна вещь, которую вы можете попробовать, - это собрать информацию в литерал объекта JavaScript, который по сути похож на структуру хэш-таблицы / словаря, но вы можете вкладывать структуры внутрь. Это не фиксированная структура и не требует наличия скрытых элементов в вашей DOM - вы можете полностью отделить ее от вашей DOM.
Затем вы можете воспользоваться нотацией JSON для передачи этой информации на ваш сервер через POST. Использование библиотеки Дугласа Крокфорда JSON2.js позволяет сериализовать и десериализовать эту структуру в / из литеральной нотации объекта. И есть большая поддержка JSON на стороне сервера.
Итак, для вашего примера вы можете сделать что-то подобное в jQuery (я немного расширил вашу разметку, чтобы иметь действующий рабочий пример):
<div class="list">
<div class="items" id="item1">
<div class="itemtitle">Some title</div>
<div class="icon"><img src="1.jpg"></div>
<div class="footer1">blah</div>
</div>
<div class="items" id="item2">Stuff</div>
<div class="items" id="item3">Stuff2</div>
<div class="items" id="item4">
<div class="itemtitle">Some other title</div>
<div class="icon"><img src="2.jpg"></div>
<div class="footer4">boo</div>
</div>
</div>
( Я предполагаю, что ваши DIV-идентификаторы последовательно нумеруются - item1, item2, item3 и т. Д. )
и JavaScript ...
var theData = {};
$(document).ready(function() {
$(".items").click(function() {
theData["title"] = $(this).find(".itemtitle").text();
theData["icon"] = $(this).find(".icon img").attr("src");
theData["footer"] = $(this).find(".footer" + ($(this).index()+1)).text();
alert(JSON.stringify(theData));
});
});
( Я предполагаю, что данные нижнего колонтитула могут быть выбраны на основе последовательно пронумерованного идентификатора DIV. )
Теперь, когда ваши измененные данные находятся в литеральной переменной объекта theData
, вы можете отправить их на ваш сервер / службу с помощью вызова jQuery $.ajax
:
$.ajax({
url: "/ajax_json_echo/",
data: theData, //just pass the literal to your server...most can handle it
type: "POST",
dataType: "json",
success: function(data) { alert(JSON.stringify(data)); }, //output it readable form
error: function(x, t, m) { alert("Error: " + t + " :: " + m); }
});
Вы можете проверить скрипку Я собрал эту демонстрацию.
Надеюсь, это поможет!