Intenté hacer eco de mi json en mi página html con php, pero solo se imprime en la consola o devuelve un error. Soy bastante nuevo en esto, así que por favor ayuda.
este es el javascript con fetch y activado al hacer clic para enviar uno a php
async function hey(){ let click = 1; await fetch('data.php',{ method: 'POST', header: { 'Content-Type': 'application/json', }, body: JSON.stringify(click), }).then(response => response.json()) .then(data => { console.log(data); }) .catch((error) => { console.error(error); });}este es el php pero solo se imprimirá en la consola
<?php $json = file_get_contents('php://input'); echo $json; ?>Describamos lo que estabas haciendo:
lo primero es lo primero, la forma en que está llamando a su método:
async function hey(){ let click = 1; await fetch('data.php',{ ... }si desea devolver el valor del json a través de su función, debe devolverlo. Creo que se espera que lo obtenga del método, por lo que puede cambiar a:
async function hey(){ let click = 1; return await fetch('data.php',{ ... }así, su función en realidad está devolviendo algo. Si esperaba que regresara a través de la invocación de then(), no funcionará, es un alcance más profundo.
Creo que la parte de búsqueda está bien, así que salto directamente a la parte luego (), que en realidad se ve así:
.then(response => response.json()) .then(data => { console.log(data); ....Creo que no necesita 2 llamadas al método then() aquí. Simplemente podrías hacer:
then(response => return response.json())No lo probé, pero no creo que debas llamar al método json, porque ya estás enviando un json. Pero para hacer eso, necesitaría incluir en php los encabezados necesarios para precisarlo, porque php no sabe que está enviando un json y probablemente hará otra cosa. Entonces su script php debería verse así:
<?php header('Content-Type: application/json; charset=utf-8'); $json = file_get_contents('php://input'); echo $json;salud