Ваши требования противоречат друг другу:
ваши данные представлены в виде, удобном для восприятия человеком, в таблице, но вы не хотите отправлять их через JSON, потому что они "читаются человеком.form [...] "
таблица огромна, со всеми tds, trs, и все же вы не против отправить те же данные через JSON (вероятно, потребуется меньше места).
Тем не менее, если вы ДЕЙСТВИТЕЛЬНО возражаете против JSON и не обращаете внимания на таблицу, вы можете извлечь данные из таблицы (которую вы отправляете в любом случае).Довольно глупо, но здесь идет речь:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js'></script>
<table id='test'>
<tr>
<td>John</td><td>Smith</td>
<td>354.3</td><td>52.5</td>
</tr>
<tr>
<td>Adam</td><td>Dreger</td>
<td>12.3</td><td> 52 </td>
</tr>
<tr>
<td>Filip</td><td>Smith</td>
<td>354.3</td><td>7.5</td>
</tr>
</table>
<script>
var data = $("#test tr").map(function(){
return [$("td", this).map(function(){
return this.innerHTML.match(/^\s*\d+(.\d+)?\s*$/)?
parseFloat(this.innerHTML) : this.innerHTML;
}).toArray()]
})
</script>
Это известный шаблон модели контроллера представления, в котором контроллер запрашивает представление для сбора данных, которые будут использоваться в качестве модели; -)
Гораздо лучшая идея (но вы против отправки JSON) - отправка данных с помощью JSON и генерация таблицы с использованием Javascript.Таким образом, у вас все еще есть четкое разделение между моделью и видом.Это на самом деле не религиозная вещь, но если вы решите, скажем, добавить некоторые промежутки к отображаемым данным, вам не придется их анализировать.
Множество разумных плагинов помогут вам превратить ваши данные втаблицы, но вы можете сойтись с:
<div id='another'>
- - -
</div>
<script>
// I assume that data is an array of arrays
$('#another').html(
[
'<table border="1">',
$(data).map(function(){
return ['<tr>',
$(this).map(function(){return "<td>" + this + "</td>"}).toArray().join("")
,'</tr>']
}).toArray().join(""),
'</table>'
].join("")
);
</script>
(примечание: два приведенных выше фрагмента могут быть объединены в цепочку и привести к дублированию первой таблицы: весело!)
РЕДАКТИРОВАТЬ:
Даже данные, которые не отображаются в таблице, могут быть помещены туда (например, в невидимых промежутках) и сделаны недоступными для случайного копирования / вставки с использованием некоторого тривиального кодирования, такого как rot13 (не включено вответ, но широко доступный).Вот так:
<style>.secret {display: none}</style>
<tr>
<td>Adam</td><td>Dreger</td>
<td>12.3</td><td> 52 </td>
<td><span class='secret'>({frperg:"ovt bar"})</span></td>
</tr>
И в коде:
<script>
var data = $("#test tr").map(function(){
return [$("td", this).map(function(){
return this.innerHTML.match(/^\s*\d+(.\d+)?\s*$/)?
parseFloat(this.innerHTML) : this.innerHTML;
}).toArray(),
eval($(".secret", this).html().rot13())]
})
</script>