Foros del Web » Programando para Internet » PHP »

json_decode no funciona correctamente

Estas en el tema de json_decode no funciona correctamente en el foro de PHP en Foros del Web. Hola muchachos es simple: cuando tengo el código en mi pc funciona, pero cuando lo subo al servidor, no corre, y solo estoy recibiendo la ...
  #1 (permalink)  
Antiguo 22/10/2011, 09:49
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 12 años, 8 meses
Puntos: 37
json_decode no funciona correctamente

Hola muchachos es simple:

cuando tengo el código en mi pc funciona, pero cuando lo subo al servidor, no corre, y solo estoy recibiendo la variable post, es el siguiente:

Código PHP:
Ver original
  1. $ids = json_decode( $_POST['idCliente'] );
  2.    
  3. foreach($ids as $key => $value) {
  4.     $ids[$key] = mysql_real_escape_string( limpiarValores($value) );
  5. }

hago un echo de $_POST['idCliente'], y me arroja esto:

Cita:
[\"111666\",\"14137361\",\"14137363\",\"150\",\"222 \",\"320\",\"355\",\"4\",\"444\",\"5555\",\"6\"]<br />
<b>Warning</b>: Invalid argument supplied for foreach() in <b>/home/prexhjgc/ext/abonos/buscarTarjeta.php</b> on line <b>19</b><br />
Ya he mirado por todos lados, pero no se si el error está cuando envio desde javascript la variable ids, pues utilizo JSON.stringify de javascript, y no creo que ese sea el problema, por que en otro lado lo estoy haciendo así, y funciona perfecto, con otro script, y enviando las variables por post.

Alguien sabe cual puede ser el error que hace que json_decode no devuelva, nada, por que intente utilizando json_last_error(), pero el servidor linux que estoy utilizando, obvio, que es de pago, no tiene esta función.


Gracias
  #2 (permalink)  
Antiguo 22/10/2011, 10:51
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: json_decode no funciona correctamente

hace esto antes del foreach:
Código PHP:
Ver original
  1. echo '<pre>';
  2. var_dump($ids);
  3. echo '</pre>';

y mostrame el resultado
  #3 (permalink)  
Antiguo 22/10/2011, 11:27
Avatar de Raziel_Ravenheart  
Fecha de Ingreso: agosto-2011
Ubicación: Ibagué, Tolima
Mensajes: 192
Antigüedad: 12 años, 8 meses
Puntos: 37
Respuesta: json_decode no funciona correctamente

si ya lo hice, pero estaba ya desesperado así que me fuí por la red, e investigué, y sucede que al utilizar la función

JSON.stringify para enviar un array, se envía con comillas dobles, y como la directiva de magic_quotes está activada en el servidor donde yo subo la página entonces si con la función de JSON desde javascript se envía esto

Cita:
["111666","14137361","14137363","150","222","320"," 355","4","444","5555","6"]
convertido en cadena, con la directiva magic_quotes en ON, se añaden los slashes, o sea queda así

Cita:
"[\"111666\",\"14137361\",\"14137363\",\"150\",\" 222 \",\"320\",\"355\",\"4\",\"444\",\"5555\",\"6\"]"
, por obvias razones, pero se supone que magic_quotes debe estar off, y por lo tanto, la función

json_decode, no puede procesar los slashes, y para limpiar la cadena, solo tenía que utilizar la funcion stripslashes de php, y listo.

Pero gracias por el consejo!!!

Última edición por Raziel_Ravenheart; 22/10/2011 a las 11:29 Razón: corregir la frase "magic_quotes"
  #4 (permalink)  
Antiguo 22/10/2011, 13:20
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 14 años
Puntos: 6
Respuesta: json_decode no funciona correctamente

Ten en cuenta que lo que tiene que recibir la función json_decode es un string, dentro de ese string tiene que HABER un formato CORRECTO.

Ejm:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

En la variable $json vemos que dentro de las comillas SIMPLES hay {"a":1,"b":2,"c":3,"d":4,"e":5}, un objeto con sus propiedades.

Si tienes esto: {"a","b","c","d","e"}, que se relaciona con los datos que tienes en tu primer post, te arrojará NULL, ya que las propiedades no tienen ningún valor.

De todas formas puedes leer el manual de php.

saludos.
  #5 (permalink)  
Antiguo 22/10/2011, 13:27
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: json_decode no funciona correctamente

Si eso pasa cuando usas todavía directivas obsoletas como Magic Quotes ya sea por gusto o porque toca.

Cita:
Esta opción ha sido declarada OBSOLETA desde PHP 5.3.0. Su uso está totalmente desaconsejado.
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP

Etiquetas: decodificar, json_decode, post, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:07.