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); ?>













