У меня есть форма, которой можно манипулировать в браузере клиента с помощью javascript (то есть строки могут быть добавлены, удалены и т. Д.). Я хотел бы как-то отправить данные этой формы обратно на сервер, но я не уверен, какой будет наилучший подход.
Один из подходов, о котором я подумал, состоит в том, чтобы динамически генерировать идентификаторы для каждой строки, добавляемой в форму, но я вижу, что это становится очень грязным, когда я пытаюсь проанализировать данные POST обратно в моем контроллере CakePHP.
Другим подходом, который пришел в голову, было бы проанализировать клиентскую форму, сгенерировать структуру JSON или XML, которую легче перебрать, и отправить ее обратно в контроллер. Хотя я не уверен, как реализовать что-то подобное.
Как вы думаете, лучшее решение для этого?
<?php echo $this->Html->script('jquery-1.7', FALSE); ?>
<h2>Assign Responses</h2>
<a id='addResponseLink' href='#'>Add a Response Action</a>
<?php
$this->Js->get('#addResponseLink');
$this->Js->event('click', "$('#responseActionsTable').append('<tr style=\'display:none\' id=\'row\'>".
"<td>".$this->Form->input('trigger_word')."</td>".
"<td>PROCEED"."</td>".
"<td>5"."</td>".
"<td><a id=\'removeLink\' href=\'#\'>Remove</a></td>".
"</tr>');".
"$('tr').last().fadeIn();".
"$('#removeLink').live('click', function() { $(this).closest('tr').fadeOut().delay(1500).queue(function() $(this).remove()); })");
?>
<?php
echo $this->Form->create(array('action' => 'assignResponsesSave'));
?>
<table id='responseActionsTable'>
<tr>
<th>Trigger Word</th>
<th>Action</th>
<th>Next Question</th>
<th>Remove</th>
</tr>
<?php foreach($responseActions as $responseAction): ?>
<tr>
<td><?php echo $this->Form->input('trigger_word', array('default' => $responseAction['responses_actions']['trigger_word'])); ?></td>
<td><?php echo($responseAction['responses_actions']['action']); ?></td> <!-- This and the next sibling will be inputs -->
<td><?php echo($responseAction['responses_actions']['next_question']); ?></td>
<td>Remove</td>
</tr>
<?php endforeach; ?>
</table>
<?php echo $this->Form->submit('Save Changes'); ?>
<?php echo $this->Form->end(); ?>
<?php echo $this->Js->writeBuffer(); ?>