Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Objeto pho con Ajax/JQuery

Estas en el tema de Objeto pho con Ajax/JQuery en el foro de PHP en Foros del Web. Buenos dias amigos del foro! Estoy queriendo recibir a través de Ajax un objeto de php: $empleado. El mismo esta definido más o menos así: ...
  #1 (permalink)  
Antiguo 30/04/2014, 09:16
 
Fecha de Ingreso: diciembre-2011
Ubicación: Villa Lugano
Mensajes: 86
Antigüedad: 12 años, 3 meses
Puntos: 0
Objeto pho con Ajax/JQuery

Buenos dias amigos del foro!
Estoy queriendo recibir a través de Ajax un objeto de php: $empleado.

El mismo esta definido más o menos así:

class Empleado {
private $nrodoc = NULL;
private $nombre = NULL;
private $cuil = NULL;
...

public function setNombre($nombre) {...}

...
}

La cuestión es que quiero recibir los datos y no sé cómo con el objeto.

$(".btn_detalle").click(function() {

var dni = $(this).attr("id");

$.post("funciones/detalleEmpleado.php",{nrodoc:dni},function(data) {
// ? qué pongo acá?
}


detalleEmpleado.php :

...

$empleado->setNroDoc($row["dni"]);
$empleado->setNombre($row["nombre"]);
$empleado->setCuil($row["cuil"]);
$empleado->setFeNac($row["fe_nac"]);
$empleado->setDireccion($row["direccion"]);
...
echo json_encode(y acá que va?);
....




Gracias!!
__________________
Persevera y triunfarás...
----------------------------------------------------
http://www.cyberargsistemas.com.ar
  #2 (permalink)  
Antiguo 30/04/2014, 10:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Objeto pho con Ajax/JQuery

Puedes hacer algo así:

script.php
Código PHP:
Ver original
  1. echo json_encode(array('clave' => 'valor'));

script.js
Código Javascript:
Ver original
  1. function(data) {
  2.   alert(data.clave); /* valor */
  3. }

La idea es fácil, debes imprimir cualquier estructura de datos en PHP en su representación JSON.

Así pues, del lado de Javascript dicha estructura ya es un objeto utilizable, nada más.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/04/2014, 11:08
 
Fecha de Ingreso: diciembre-2011
Ubicación: Villa Lugano
Mensajes: 86
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Objeto pho con Ajax/JQuery

Gracias por tu respuesta!
pero aún no entiendo cómo lo hago con un objeto de php.

$empleado->dni;
$empleado->nombre;
$empleado->fechaNac;

Gracias!
__________________
Persevera y triunfarás...
----------------------------------------------------
http://www.cyberargsistemas.com.ar
  #4 (permalink)  
Antiguo 30/04/2014, 11:13
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Objeto pho con Ajax/JQuery

Tu variable $empleado es un objeto en si, no hace falta nada más.

¿No has leído el manual de json_encode() o hecho algunos ejemplos?

No es posible que no lo hayas intentado siquiera, no necesitas permiso para eso.
Código PHP:
Ver original
  1. echo json_encode($empleado);
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 30/04/2014, 11:33
 
Fecha de Ingreso: diciembre-2011
Ubicación: Villa Lugano
Mensajes: 86
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Objeto pho con Ajax/JQuery

Gracias nuevamente, y si. Lo intente de varias maneras.

Acabo de ver que las variables de la clase php son privadas y cuentan con getters y setters. Las puse como public y las leo correctamente! así que por ahí va la cosa.

Cómo puedo hacerlo sin perder estas propiedades?

Mil gracias!
__________________
Persevera y triunfarás...
----------------------------------------------------
http://www.cyberargsistemas.com.ar
  #6 (permalink)  
Antiguo 30/04/2014, 13:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Objeto pho con Ajax/JQuery

Bueno, para mantener privadas dichas propiedades y a su vez obtener sus valores es tan fácil como construir el objeto/array a mano.

Código PHP:
Ver original
  1.   'foo' => $obj->getFoo(),
  2.   'bar' => $obj->getBar()
  3. ));

Usa tu ingenio.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 30/04/2014, 13:39
 
Fecha de Ingreso: diciembre-2011
Ubicación: Villa Lugano
Mensajes: 86
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Objeto pho con Ajax/JQuery

excelente!
es que hace poco empecé a incursionar en jquery/ajax.

Muchas gracias!

__________________
Persevera y triunfarás...
----------------------------------------------------
http://www.cyberargsistemas.com.ar
  #8 (permalink)  
Antiguo 30/04/2014, 14:09
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Objeto pho con Ajax/JQuery

Cita:
Iniciado por pateketrueke Ver Mensaje
Bueno, para mantener privadas dichas propiedades y a su vez obtener sus valores es tan fácil como construir el objeto/array a mano.

Código PHP:
Ver original
  1.   'foo' => $obj->getFoo(),
  2.   'bar' => $obj->getBar()
  3. ));

Usa tu ingenio.
El problema es que si agregas propiedades tienes que cambiar el json_enconde también. Lo que se puede hacer es que el objeto se encargue de devolver el arreglo por si mismo.
Para versiones menores a PHP 5.4 puedes hacer algo como lo siguiente:
Código PHP:
Ver original
  1. // No estan los métodos para simplificar
  2. class Empleado {
  3.     private $nrodoc = NULL;
  4.     private $nombre = NULL;
  5.     private $cuil = NULL;
  6.  
  7.     public function toArray(){
  8.         return get_object_vars($this);
  9.     }
  10.  
  11. }
  12.  
  13. $empleado = new Empleado();
  14. var_dump(json_encode($empleado->toArray()));

En version a partir de la 5.4 puedes implementar la interfaz JsonSerializable: http://www.php.net/manual/en/class.jsonserializable.php
Ejemplo:
Código PHP:
Ver original
  1. class Empleado implements JsonSerializable {
  2.     private $nrodoc = NULL;
  3.     private $nombre = NULL;
  4.     private $cuil = NULL;
  5.  
  6.     public function jsonSerialize()
  7.     {
  8.         return get_object_vars($this);
  9.     }
  10. }
  11.  
  12. // json_encode llama al metodo jsonSerialize
  13. $empleado = new Empleado();
  14. var_dump(json_encode($empleado));
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: objeto, pho
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 16:46.