Ahora nos queda ver como en el servidor recibir datos con formato JSON y proceder a generar una clase en PHP mediante la función json_decode.
La sintaxis es:
$cad=json_decode(stripslashes($_REQUEST['cadena'])); echo 'Nombre:'.$cad->nombre; ... ...
Es decir la función json_decode recibe como parámetro una cadena con datos codificados en JSON y procede a retornar la información en un objeto.
Confeccionaremos un problema que envíe desde el navegador información en formato JSON y en el servidor la convertiremos en un objeto de PHP y procederemos a generar un trozo de HTML que retornaremos al navegador para que lo muestre.
El archivo pagina1.html
addEventListener('load',inicializarEventos,false);
function inicializarEventos()
{
var ref=document.getElementById('boton1');
ref.addEventListener('click',botonPresionado,false);
}
function botonPresionado(e)
{
var obj={
nombre:'juan',
edad:25,
sueldos:[1200,1700,1990]
};
var cadena=JSON.stringify(obj);
enviarDatos(cadena);
}
var conexion1;
function enviarDatos(cadena)
{
conexion1=new XMLHttpRequest();
conexion1.onreadystatechange = procesarEventos;
conexion1.open('GET','pagina1.php?cadena='+cadena, true);
conexion1.send(null);
}
function procesarEventos()
{
var resultados = document.getElementById("resultados");
if(conexion1.readyState == 4)
{
resultados.innerHTML = conexion1.responseText;
}
else
{
resultados.innerHTML = "Cargando...";
}
}
Cuando se presiona el botón procedemos a partir de un objeto JavaScript generar una cadena en formato JSON, luego procedemos a llamar a la función enviarDatos:
function botonPresionado(e)
{
var obj={
nombre:'juan',
edad:25,
sueldos:[1200,1700,1990]
};
var cadena=JSON.stringify(obj);
enviarDatos(cadena);
}
La función enviarDatos procede a crear un objeto de la clase XMLHttpRequest y pasa mediante el parámetro GET la cadena en formato JSON:
var conexion1;
function enviarDatos(cadena)
{
conexion1=new XMLHttpRequest();
conexion1.onreadystatechange = procesarEventos;
conexion1.open('GET','pagina1.php?cadena='+cadena, true);
conexion1.send(null);
}
Solo queda mostrar el trozo de datos en HTML que retorna el servidor:
function procesarEventos()
{
var resultados = document.getElementById("resultados");
if(conexion1.readyState == 4)
{
resultados.innerHTML = conexion1.responseText;
}
else
{
resultados.innerHTML = "Cargando...";
}
}
Lo nuevo se centra en el archivo pagina1.php:
<?php $cad=json_decode(stripslashes($_REQUEST['cadena'])); echo 'Nombre:'.$cad->nombre; echo '<br>'; echo 'Edad:'.$cad->edad; echo '<br>'; echo 'Primer sueldo:'.$cad->sueldos[0]; echo '<br>'; echo 'Segundo sueldo:'.$cad->sueldos[1]; echo '<br>'; echo 'Tercer sueldo:'.$cad->sueldos[2]; ?>
La función que convierte una cadena con formato JSON en un objeto de PHP es:
$cad=json_decode(stripslashes($_REQUEST['cadena']));
Recordemos que con la función stripslashes sacamos los caracteres de escape(barras invertidad para las comillas entre otras)
Luego podemos fácilmente acceder a los atributos del objeto con la sintaxis:
echo 'Nombre:'.$cad->nombre; echo '<br>'; echo 'Edad:'.$cad->edad; echo '<br>'; echo 'Primer sueldo:'.$cad->sueldos[0]; echo '<br>'; echo 'Segundo sueldo:'.$cad->sueldos[1]; echo '<br>'; echo 'Tercer sueldo:'.$cad->sueldos[2];
Confeccionar un problema que envíe desde el navegador información en formato JSON y en el servidor convertirla en un objeto de PHP y proceder a generar un trozo de HTML que retorne al navegador para que lo muestre.