Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: DaNuK en 13 Agosto 2013, 19:45 pm



Título: tratar datos de json en javascrip
Publicado por: DaNuK en 13 Agosto 2013, 19:45 pm
Hola q tal buenas tardes a todos
necesito de su ayuda para resolver un problema q se me presento se trata de json como tratarlo en javascript
a continuacion les pongo mi code.
json es lo que me devuelve el servidor
[{"campo":"usr_prs_rfc","tipo":"string","longitud":"13"},{"campo":"usr_email","tipo":"string","longitud":"19"},{"campo":"usr_prf_id","tipo":"string","longitud":"4"},{"campo":"usr_clave","tipo":"string","longitud":"6"},{"campo":"usr_tipo","tipo":"string","longitud":"8"},{"campo":"subtipo","tipo":"string","longitud":"0"},{"campo":"usr_tienda","tipo":"int","longitud":"1"},{"campo":"usr_activo","tipo":"int","longitud":"1"},]
y este el code javascript
Código
  1. function DibControles(a,destino){
  2. var datos=eval("("+a+")");
  3. alert(datos.campo);
  4.  
y me arroja un error que dice que el campo no esta definido
--
[12:31:43.189] TypeError: datos.campo is undefined @ http://localhost/skydrive/sistema/js/Ajax1.js:29
Espero me pueda ayudar
Saludos


Título: Re: tratar datos de json en javascrip
Publicado por: Almapa en 14 Agosto 2013, 00:54 am
No acabo de entender que introduces a la función con la variable "a" a partir del cual defines la variable "datos". Si le introduces uno de los objetos que hay en el array, si le quitas la función de eval() y lo defines directamente como datos=a si que me funciona. En el caso en el que "a" sea el número del objeto que se desea bastará con poner datos=variable_de_objetos[a].

No acabo de entender para que utilizas la función eval() pues no se que se inserta con la variable "a", pero creo que el problema está ahí, pues no define bien la variable "datos" por lo visto.

Un saludo!


Título: Re: tratar datos de json en javascrip
Publicado por: #!drvy en 14 Agosto 2013, 08:23 am
Como te ha dicho el compañero Almapa, lo que haces no tiene ningun sentido.

Recuerda que json se puede tratar como un simple array en javascript.

Código
  1. var json = [
  2.   {"campo":"usr_prs_rfc","tipo":"string","longitud":"13"},
  3.   {"campo":"usr_email","tipo":"string","longitud":"19"},
  4.   {"campo":"usr_prf_id","tipo":"string","longitud":"4"},
  5.   {"campo":"usr_clave","tipo":"string","longitud":"6"},
  6.   {"campo":"usr_tipo","tipo":"string","longitud":"8"},
  7.   {"campo":"subtipo","tipo":"string","longitud":"0"},
  8.   {"campo":"usr_tienda","tipo":"int","longitud":"1"},
  9.   {"campo":"usr_activo","tipo":"int","longitud":"1"},
  10. ];
  11.  
  12. for(var i=0; i<json.length;i++){
  13.   var campo = json[i]['campo'];
  14.   var tipo = json[i]['tipo'];
  15.   var longitud = json[i]['longitud'];
  16.   document.write(campo+' - '+tipo+' - '+longitud+'<br />');
  17. };

O como objeto:
Código
  1. for(var i=0; i<json.length;i++){
  2.   var campo = json[i].campo;
  3.   var tipo = json[i].tipo;
  4.   var longitud = json[i].longitud;
  5.   document.write(campo+' - '+tipo+' - '+longitud+'<br />');
  6. };

Resultado:
usr_prs_rfc - string - 13
usr_email - string - 19
usr_prf_id - string - 4
usr_clave - string - 6
usr_tipo - string - 8
subtipo - string - 0
usr_tienda - int - 1
usr_activo - int - 1

Saludos


Título: Re: tratar datos de json en javascrip
Publicado por: DaNuK en 14 Agosto 2013, 20:32 pm
Gracias a todos ya pude resolverlo
Saludos