Как добавить новый ZF2' Zend\Form\Element в jQuery ajax
Я хочу добавить новый ZF2' Zend\Form\Element в jQuery ajax. Но пока я использую Zend Form, я не знаю, как это сделать. Это файл add.phtml.
<script type="text/javascript">
$(document).ready(function(){
$(".pid").change(function(){
var id = $('.pid').val();
var $_this = $(this);
$.ajax({
type:"POST",
url:"<?php echo $this->url('Element/default',array('action'=>'change'));?>",
data:"pid="+id,
dataType:'json',
async:false,
success:function(data){
if(data.response){
//here I want to add a new select component after select conponent "pid" using like "$this->formRow($form->get('mid'))" or else .
}
}
});
});
});
</script>
Ниже приводится оставшаяся часть HTML.
<?php
$title = 'add';
$this->headTitle($title);
?>
<h1><?php echo $this->escapeHtml($title); ?></h1>
<?php
$form = $this->form;
$form->setAttribute('action', $this->url(
'Element/default',
array(
'action' => 'add'
)
));
$form->prepare();
echo $this->form()->openTag($form);
echo $this->formRow($form->get('pid'));
echo $this->formRow($form->get('name'));
echo $this->formRow($form->get('desc'));
echo $this->formSubmit($form->get('submit'));
echo $this->form()->closeTag();
Как добавить новый элемент формы Zend в JQuery AJAX? Благодарю.
1 ответ
У вас есть скрипт для получения данных с использованием ajax, и этот скрипт должен получить view/html. Вам нужен контроллер / действие для рендеринга данных и возврата в качестве ответа.
use Zend\View\Model\JsonModel;
//some controller
public function changeAction(){ // your requested action
//1. get partial helper to rendering html;
$partial = $this->getServiceLocator()->get('ViewHelperManager')->get('partial');
$form = new Form();// your form
//2. render html
$html = $partial('path/to/your/file/phtml',['form'=>$form]);
//3. return data as JSON because in your ajax configuration dataType: 'json'
return new JsonModel([
'html' => $html,
]);
}
в вашей JS функция успеха должна быть:
success:function(data){
if(data.html){
$_this.find('blockToAppend').append(data.html);
}
}