Problema para guardar salida Json/Ajax en variable PHP
Publicado por Mario Campos (4 intervenciones) el 11/12/2018 04:22:17
Estimados, tengo un problema, la respuesta json/ajax la puedo imprimir en el id de un span, pero no puedo guardar en una variable php esa respuesta. Cómo almaceno cada elemento del json en una variable php?
El formulario:
Llamada Ajax
El archivo procesa.php
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.
Dónde está mi error?
El formulario:
1
2
3
4
5
6
7
8
9
10
<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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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.
1
2
]echo $_POST["nombre"]; //Tomando el nombre de la key nombre del json. No funciona.
echo $_POST["myName"]; //El id de la respuesta. No funciona.
Valora esta pregunta


0