El formulario:
Código HTML :
<form id="form"> <input type="text" id="nombre" placeholder="Nombre" > <input type="text" id="apellido" placeholder="Apellido" > <input type="number" id="edad" placeholder="Edad" > <input type="submit" name="enviar" id="enviar" value="Enviar"> </form> <hr> <p>Name: <span id="myName"></span></p> <p>Apellido: <span id="myApellido"></span></p> <p>Edad: <span id="myEdad"></span></p>
Llamada Ajax
Código Javascript :
<script type="text/javascript"> $("#enviar").click(function(e) { e.preventDefault(); var nombre = $("#nombre").val(), apellido = $("#apellido").val(), edad = $("#edad").val(), //"nombre del parámetro POST":valor (el cual es el objeto guardado en las variables de arriba) datos = {"nombre":nombre, "apellido":apellido,"edad":edad}; $.ajax({ url: "procesa.php", type: "POST", dataType: 'json', data: datos }).done(function(respuesta){ if (respuesta.estado === "ok") { $('#myName').text(respuesta.nombre); $('#myApellido').text(respuesta.apellido); $('#myEdad').text(respuesta.edad); } }); }); </script>
El archivo procesa.php
Código PHP :
<?php //Obtenemos los datos de los input $nombre = $_POST["nombre"]; $apellido = $_POST["apellido"]; $edad = $_POST["edad"]; //Hacemos las comprobaciones que sean necesarias... (sanitizar los textos para evitar XSS e inyecciones de código, comprobar que la edad sea un número, etc.) //Omitido para la brevededad del código //PERO NO OLVIDES QUE ES ALGO IMPORTANTE. //Seteamos el header de "content-type" como "JSON" para que jQuery lo reconozca como tal header('Content-Type: application/json'); //Guardamos los datos en un array $datos = array( 'estado' => 'ok', 'nombre' => $nombre, 'apellido' => $apellido, 'edad' => $edad ); //Devolvemos el array pasado a JSON como objeto echo json_encode($datos, JSON_FORCE_OBJECT); ?>
El sistema funciona perfecto, publicando las respuestas en el id de los span que están bajo el form. Pero lo que quiero es guardar cada cada valor de la clave json en una variable php. He probado lo siguiente pero no funciona.
Código PHP :
]echo $_POST["nombre"]; //Tomando el nombre de la key nombre del json. No funciona. echo $_POST["myName"]; //El id de la respuesta. No funciona.
Dónde está mi error?