Pasar JSON desde PHP(MySql) a JavaScript

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.

22 respuestas to “Pasar JSON desde PHP(MySql) a JavaScript”

  1. Scott Says:

    No se puede hacer la consulta con php y despues pasarla con mysql_fetch_array?

    • jorge Says:

      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

  2. Lenny Says:

    Hola gracias me ayudo tu tutorial.

  3. juanma Says:

    Muchisisisisisisimas gracias por el aporte!!! Me ha ayudado tu tutorial mucho, gracias!

  4. Felipe Says:

    Muchas gracias, fue de gran ayuda …:)

  5. David Blanco Says:

    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

  6. asd Says:

    hola lo podrian explicar un poco mas claro esque soi principiante y no llege a entender el funcionamiento de json

  7. juan Says:

    EXCELENTE GRACIAS, HAS DE CUENTA QUE SALVASTE EL UNIVERSO CON ESE APORTE!!

  8. Marcos Says:

    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!

  9. Vesper Says:

    Muy bueno eso es lo que estaba buscando………

  10. Matías Menker Says:

    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.

  11. Carlos Enrique Ramirez Says:

    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.

  12. Hector (@heday1101) Says:

    Muy bueno, me sirvió Gracias

  13. Hector (@heday1101) Says:

    Muy bueno pero tengo una duda, parecera tonta pero la verdad no se como funciona jquery. el codigo para ejecutar esta funcion como seria?

  14. Henry Says:

    Salva la patria, muchas gracias …. estaba realmente lejos de la solucion

  15. jibanezm1 Says:

    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!!

  16. Arturo Garcia Says:

    Si funciona amigo muchas gracias!!!!

  17. OSWALDO Says:

    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)

  18. HAROLD EDUARDO RAMIREZ GUTIERREZ Says:

    Excelente hermano……no sabe de la que me salvo…..muy buen aporte

  19. Edwin Says:

    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


Deja un comentario