Ok, primero refactoriza y que se envien correctamente las cabeceras y luego, vemos si el error persiste.
Para refactorizar:
ClientesMapper debe devolver el resultset
Código PHP:
Ver originalpublic function search($p1, $p2)
{
$select = $this->getDbTable()->select()
->from(array('pac' => 'clientes'), array('rut'=>'pac.rut', 'nombre'=>'CONCAT(pac.nombres, " " , pac.apellidoPaterno)')) ->where($p1.' LIKE ?', '%'.$p2.'%')
->order('apellidoPaterno ASC');
return $this->getDbTable()->fetchAll($select);
}
ClientesController inicializa los contextos y asigna el resultado del mapper a la vista.
Código PHP:
Ver originalclass ClientesController extends Zend_Controller_Action
{
public function init()
{
$contextSwitch = $this->_helper->getHelper('contextSwitch');
$contextSwitch->addActionContext('search', 'xml')
->initContext();
}
public function searchAction()
{
$_request = $this->getRequest();
if ($_request->isGet())
{
$filtro = $_request->getQuery('filtro');
$criterio = $_request->getQuery('criterio');
if (null !== $filtro && null !== $criterio)
{
//instancio el modelo para invocar al metodo
$clientes= new Application_Model_Clientes();
$this->view->clientes = $clientes->search($filtro, $criterio);
}
}
}
}
En la vista del contexto iterar y crear el xml, el fichero se debe llamar search.xml.phtml
Código HTML:
Ver original<?xml version='1.0' encoding='utf-8' ?>
<items>
<?php if (0 < count($this->clientes)) : ?>
<?php foreach ($this->clientes as $row) : ?>
<RUT><?php echo $row->rut; ?></RUT>
<NOMBRES><?php echo $row->nombre; ?></NOMBRES>
<?php endforeach; ?>
<?php else : ?>
<RUT>1</RUT>
<NOMBRES>No se encontraron coincidencias</NOMBRES>
<?php endif; ?>
</items>
Y por último la peticion ajax debe tener el parametro format con el contexto
Código Javascript
:
Ver original...
function loadItems(tipo)
{
var filtro;
if (document.frm_buscar_clientes.filtros[0].checked){
filtro='apellidoPaterno';
} else {
filtro='rut';
}
getXML("/filtro/"+filtro+"/criterio/"+tipo+"/format/xml");
}
...
Debería ser algo así, no lo eh probado así que puede tener typos, probalo y si falla algo comentalo.
Saludos.