Podemos utilizar Ajax en Zend Framework 2 de forma similar a como lo haríamos en otros frameworks. En Zend contamos con algunas funciones específicas para trabajar con Ajax. Veamos un ejemplo.
La vista que hará la petición AJAX al dar click a un botón.
<script> $(document).ready(inicio); function inicio(){ var x=$(".cargar"); x.click(cargar); function cargar(){ $.ajax({ async: true, type: "POST", url: "<?=$this->basePath("crud/usuariosajax")?>", success: function(datos){ $("#usuarios").html(datos); } }); return false; } } </script> <h1>Probando AJAX con ZF2</h1> <button class="cargar">Cargar</button> <div id="usuarios"></div>
El controlador
public function usuariosAjaxAction(){ /*Comprobamos si la petición es por AJAX y si no lo es nos redirige a otra pagina*/ if($this->request->isXmlHttpRequest()){ $this->dbAdapter=$this->getServiceLocator()->get('Zend\Db\Adapter'); $usuarios=new UsuariosModel($this->dbAdapter); //Llamamos a un metodo del modelo $todos=$usuarios->listarTodos(); //Cargamos la vista usuariosajax.phtml $vista = new ViewModel(array( 'todos'=>$todos )); /* Le indicamos que será una vista sin plantilla, es decir, no cargará todo el contenido de la plantilla sino que solo cargará los datos que imprima */ $vista->setTerminal(true); return $vista; }else{ return $this->redirect()->toUrl($this->getRequest()->getBaseUrl()); } }
La vista que vendrá por Ajax
Usuariosajax.phtml
<?php var_dump($this->todos); ?>