El trabajo con estructuras JSON para el intercambio de datos entre cliente y servidor es una tarea relativamente sencilla y potente que permite agilizar el desarrollo. En este caso si necesitamos enviar datos desde un servidor que utiliza PHP y recupera datos de una base MySql bastará con tener un archivo .php similar a este:
$sql = "SELECT ID, POBLACION, NUMVISITAS FROM VISITAS_CENTROS"; $resulset = mysql_query($sql, $_SESSION["idBD"]) $arr = array(); while ($obj = mysql_fetch_object($resulset)) { $arr[] = array('ID' => $obj->ID, 'P' => utf8_encode($obj->POBLACION), 'NV' => $obj->NUMVISITAS, ); } echo '' . json_encode($arr) . '';
El tema de la conexión con MySql puede ser consultado acá.
Haciendo uso de la instrucción mysql_fetch_object recorreremos cada unos de los resultados de la consulta y los introduciremos en un Array que será transaformado median la instrucción json_encode.
En nuestro cliente podemos llamar a este archivo mediante JQuery de la siguiente forma:
$.ajax({ type: "POST", url:"getData.php", async: true, success: function(datos){ var dataJson = eval(datos); for(var i in dataJson){ alert(dataJson[i].ID + " _ " + dataJson[i].P + " _ " + dataJson[i].NV); } }, error: function (obj, error, objError){ //avisar que ocurrió un error } });
Donde el mostrar la información será tan fácil como utilizar un for para el objeto Json. Utilizando la sintaxis dataJson[i].PROPIEDAD para acceder a la información.
Sencillo pero muy útil.
Saludos.
marzo 15, 2012 a las 3:01 pm
´l
junio 15, 2012 a las 10:01 am
No se puede hacer la consulta con php y despues pasarla con mysql_fetch_array?
agosto 27, 2012 a las 11:09 am
no es necesario. de hecho, como nos lo propone es mejor. de otro modo deberíamos hacer cosas tediosas, como conversión a texto, concatenación. etc
julio 25, 2012 a las 3:43 pm
Hola gracias me ayudo tu tutorial.
octubre 31, 2012 a las 6:18 am
Muchisisisisisisimas gracias por el aporte!!! Me ha ayudado tu tutorial mucho, gracias!
noviembre 5, 2012 a las 11:01 pm
Muchas gracias, fue de gran ayuda …:)
noviembre 20, 2012 a las 11:58 am
Hola tengo un problema al extraer de una query en mysql si obtengo algun campo en la select con el alias el json de devuelve null, algien sabe de este problema.
gracias de antemano
noviembre 25, 2012 a las 10:13 pm
Que tal, si nos pones un ejemplo de tu código, tal vez podamos ayudarte. Saludos.
enero 27, 2013 a las 10:59 pm
hola lo podrian explicar un poco mas claro esque soi principiante y no llege a entender el funcionamiento de json
marzo 3, 2013 a las 11:22 pm
EXCELENTE GRACIAS, HAS DE CUENTA QUE SALVASTE EL UNIVERSO CON ESE APORTE!!
marzo 10, 2013 a las 1:12 pm
Hola gente que tal.
Estoy incursionando en realizar una API en PHP para comunicarme con una base de datos MySQL, y «transformar» la consulta devuelta a JSON.
El tema es que cuando hago la conversión con JSON también me incluye el título de cada columna… y eso no me sirve, solamente necesito los valores de cada columna. Código PHP.
Muchas gracias!
junio 26, 2013 a las 3:31 am
Muy bueno eso es lo que estaba buscando………
diciembre 30, 2013 a las 9:34 pm
Creo que mejor seria hacer:
$sql = «SELECT ID, POBLACION, NUMVISITAS FROM VISITAS_CENTROS»;
$resulset = mysql_query($sql, $_SESSION[«idBD»])
$arr = array();
while ($obj = mysql_fetch_object($resulset)) {
$arr[] = $obj;
}
echo » . json_encode($arr) . »;
Mucho mas simple, saludos.
May 6, 2014 a las 1:05 pm
Hermano, una duda, donde dice function(datos), ya solito sabe los valores que tomara?, nomas no me da en mi codigo u.u y me encuentro muy desesperado… u.u mi correo charly.soft@hotmail.com si me puedes hechar la mano te lo agradecere demasiado bro.
junio 25, 2014 a las 1:24 am
Muy bueno, me sirvió Gracias
junio 25, 2014 a las 1:38 am
Muy bueno pero tengo una duda, parecera tonta pero la verdad no se como funciona jquery. el codigo para ejecutar esta funcion como seria?
agosto 25, 2014 a las 3:29 am
Salva la patria, muchas gracias …. estaba realmente lejos de la solucion
agosto 30, 2014 a las 4:55 pm
Estimados al momento de implementar su codigo me lanza un error de undefined cuando lo intento mostrar y la otra forma posible me lanza Uncaught SyntaxError: Unexpected token $obj->NombreProtocolo,
‘idprotocolo’ => utf8_encode($obj->IdProtocolo),
‘IDPARTIDA’ => $obj->IdPartidas,
‘idlch’ => utf8_encode($obj->Id),
‘idpartidaporprotocolos’ => $obj->IdPartidasProtocolos,
);
}
echo » . json_encode($arr) . »;
Si me podrian ayudar por favor!! Muchas gracias!! Saludos a todoos!!
octubre 17, 2014 a las 3:51 pm
Si funciona amigo muchas gracias!!!!
octubre 30, 2014 a las 2:01 pm
Gracias por la publicación……
Solo tuve un problema con los datos ‘iso-8859-1’ para convertirlos a ‘utf-8’ (‘P’ => utf8_encode($obj->POBLACION),) la solución que encontré fue con la función iconv(‘ISO-8859-1′,’UTF-8’,$obj->POBLACION) y me funcionó correctamente.
«P»=>iconv(‘ISO-8859-1′,’UTF-8’,$obj->POBLACION)
enero 25, 2015 a las 1:59 pm
Excelente hermano……no sabe de la que me salvo…..muy buen aporte
febrero 23, 2017 a las 10:53 am
Muy bueno el aporte
Una pregunta como se realizaria para asignar el ( dataJson[i].ID ) y que se visualice en un $(‘#campo’).html(dataJson[i].ID) porque de esa forma no se visualiza