recorrer print ejemplo php javascript arrays json stringify

php - print - cómo usar JSON.stringify y json_decode() correctamente



return json php (6)

Estoy tratando de pasar una matriz mulitidimensional de Javascript a otra página en mi sitio por:

  • usando JSON.stringify en la matriz

  • asignando el valor resultante a un campo de entrada

  • publicando ese campo en la segunda página

  • usando json_decode en el valor publicado

  • entonces var_dump para probar

  • (haciendo eco de la variable publicada directamente solo para ver si salió)

Javascript en la página uno:

var JSONstr = JSON.stringify(fullInfoArray); document.getElementById(''JSONfullInfoArray'').value= JSONstr;

php en la página dos:

$data = json_decode($_POST["JSONfullInfoArray"]); var_dump($data); echo($_POST["JSONfullInfoArray"]);

El eco funciona bien pero el var_dump devuelve NULL

¿Qué he hecho mal?

Esto me hizo arreglar:

$postedData = $_POST["JSONfullInfoArray"]; $tempData = str_replace("//", "",$postedData); $cleanData = json_decode($tempData); var_dump($cleanData);

No estoy seguro de por qué, pero la publicación llegó con un montón de "/" caracteres que separan cada variable en la cadena

Lo descubrí usando json_last_error() como lo sugirió Bart, que devolvió JSON_ERROR_SYNTAX


Cuando guarda algunos datos usando JSON.stringify () y luego necesita leer eso en php. El siguiente código funcionó para mí.

json_decode( html_entity_decode( stripslashes ($jsonString ) ) );

Gracias a @Thisguyhastwothumbs


Cuando use JSON stringify, utilice html_entity_decode primero antes de json_decode.

$tempData = html_entity_decode($tempData); $cleanData = json_decode($tempData);


Deberá verificar el contenido de $_POST["JSONfullInfoArray"] . Si algo no analiza, json_decode simplemente devolverá null . Esto no es muy útil, por lo tanto, cuando se devuelve null , debe verificar json_last_error() para obtener más información sobre lo que salió mal.


Ninguna de las otras respuestas funcionó en mi caso, muy probablemente porque la matriz JSON contenía caracteres especiales. Lo que lo solucionó para mí:

Javascript (agregado encodeURIComponent)

var JSONstr = encodeURIComponent(JSON.stringify(fullInfoArray)); document.getElementById(''JSONfullInfoArray'').value = JSONstr;

PHP (sin cambios desde la pregunta)

$data = json_decode($_POST["JSONfullInfoArray"]); var_dump($data); echo($_POST["JSONfullInfoArray"]);

Se ha verificado que echo y var_dump funcionan bien en una muestra de más de 2000 datasets ingresados ​​por el usuario que incluyen un campo URL y un campo de texto largo, y que devolvieron NULL en var_dump para un subconjunto que incluía URL con los caracteres ?&# .


jsonText = $_REQUEST[''myJSON'']; $decodedText = html_entity_decode($jsonText); $myArray = json_decode($decodedText, true);`


stripslashes(htmlspecialchars(JSON_DATA))