Foros del Web » Programando para Internet » PHP » Zend »

Problema con json y Zend

Estas en el tema de Problema con json y Zend en el foro de Zend en Foros del Web. Hola amigos, Estoy implementando un casilla de autocomple en mi web, utilizo jquery (formato Json) en zend y apesar que la extructura json es correcta ...
  #1 (permalink)  
Antiguo 12/04/2012, 16:20
Avatar de chinoloco  
Fecha de Ingreso: julio-2003
Mensajes: 83
Antigüedad: 20 años, 9 meses
Puntos: 1
Problema con json y Zend

Hola amigos,

Estoy implementando un casilla de autocomple en mi web, utilizo jquery (formato Json) en zend y apesar que la extructura json es correcta no logro que se muestra las autosugerencias:

controlador:
Código PHP:
public function buscaAction()
    {

        
$model = new Application_Model_searching();
        
$results $model->searchfriends($this->_getParam('term'));

        
$listresult = array(); 
    
        foreach(
$results as $cmn
        { 
              
$listresult[] = array('nombre' => $cmn['nombre'].' '.$cmn['apellido'],'id' => $cmn['iduser']);
        } 

        
$this->_helper->json($listresult); 
        
        
$this->_helper->layout->disableLayout();
        
$this->_helper->viewRenderer->setNoRender();
   

    } 

vista:

Código PHP:
<script type="text/javascript">
  $(function(){
      $('#buscar_usuario').autocomplete({
          
            source : '<?php echo $this->url(array('controller' => 'index','action' => 'busca')); ?>',
            
            select : function(event, ui){
                    $('#wrapper').load('/profile/profilelist/id/7');

            }
        }); 
  });
</script>


<div id="busqueda">
    <input type="text"  id="buscar_usuario" name="buscar_usuario" />
</div>

la estructura de json que le envio es asi:
Código HTML:
[{"nombre":"Juan  Torres","id":1},{"nombre":"Juan Melgar","id":7},{"nombre":"Luis Perez","id":8}]
He buscado alguna historia parecida y no he encontrado, la cuestion es que en muchos ejemplos source : es una URL y en mi caso es un controlador/action,

espero me puedan ayudar,

muchas gracias de antemando,

salludos
  #2 (permalink)  
Antiguo 12/04/2012, 17:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con json y Zend

Deberías de leer la documentación del jQuery Autocomplete, este espera un arreglo de objetos así:
Código Javascript:
Ver original
  1. [ { label: "Choice1", value: "value1" }, ... ]

Tú le estas pasando un arreglo diferente, genera la estructura correcta y debe de funcionar.

Saludos.
  #3 (permalink)  
Antiguo 13/04/2012, 06:59
Avatar de chinoloco  
Fecha de Ingreso: julio-2003
Mensajes: 83
Antigüedad: 20 años, 9 meses
Puntos: 1
Respuesta: Problema con json y Zend

Hola GatorV,

Gracias por responder, es curioso porque la estructura:

Código PHP:
[{"nombre":"Juan  Torres","id":1},{"nombre":"Juan Melgar","id":7},{"nombre":"Luis Perez","id":8}] 
Con el validador de json http://jsonlint.com/ no da error y la estrutura que mencionas (manual oficial de jquery) da error, en todo caso como podría hacer que la salida del array sea igual a la estructura que mencionas ?, me esta costando un poco obtener esa estructura.

un saludo
  #4 (permalink)  
Antiguo 13/04/2012, 08:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con json y Zend

No es que este mal tu estructura, simplemente es que no es la que espera el jQuery Autocomplete, este espera un array de objetos con diferentes llaves, podría ser algo así:
Código PHP:
Ver original
  1. $datos = array(
  2.      array(
  3.            'label' => 'Fulanito',
  4.            'value' => 1
  5.      ),
  6.      array(
  7.            'label' => 'Sutanito',
  8.            'value' => 2
  9.      ),
  10.      array(
  11.            'label' => 'Menganito',
  12.            'value' => 3
  13.      )
  14. );

Saludos.

Etiquetas: json, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:21.