• Publicidad

Valor entero en JSON no lo captura por sí solo

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Valor entero en JSON no lo captura por sí solo

Notapor jlozano » 2017-08-30 04:03 @210

Buenos días.

Primero de todo, gracias por toda la ayuda que ofrecéis y la de problemas que me habéis solucionado.

Soy un total novato en el mundo de Perl (algo he hecho pero aún me encuentro en fase de aprendizaje).

La cuestión, no sabía cómo plantear la pregunta, porque no le encuentro ningún sentido.

Tengo una web con formularios donde los envío a Perl mediante Ajax.

El código de JQuery es el siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using javascript Syntax Highlighting
  1. $("#saveProd").click(function() {
  2.             var prodGeneral = JSON.stringify($("#changeProdGenerals").serializeArray());
  3.  
  4.             $.ajax({
  5.                 type: 'POST',
  6.                 url: '/cgi-bin/saveNewProduct.pl',
  7.                 data: {
  8.                     prodGeneral: prodGeneral,
  9.  
  10.                 },
  11.                 success: function(r) {
  12.                     //location.reload();
  13.                 }
  14.             });
  15.         });
  16.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

La cuestión es que en Perl recibo la variable tal que así (así recibo los datos, eso seguro):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use warnings;
  4.  
  5. use DBI;
  6. use CGI;
  7. use DBI::Profile;
  8. use IO::Handle;
  9. use File::Basename;
  10. use HTML::Entities;
  11. use JSON;
  12. use Data::Dumper;
  13.  
  14. require 'config.pl';
  15. require 'lib/cookieManager.pl';
  16. require 'lib/sessions.pl';
  17.  
  18. my $q = new CGI;
  19.  
  20. print "content-type:text/plain\n\n";
  21. my $text = decode_json( $q->param("prodGeneral") );
  22. my $idp  = $text->[0]->{value};                #TODO verificar atributos
  23. $idp .= $text->[0]->{name};                    #TODO verificar atributos
  24. print $idp;
  25.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
La cuestión es que si imprimo una cadena (name) me la imprime bien por pantalla.
Si imprimo la variable 'value', que en este caso es un entero, no me imprime nada.
Pero si imprimo las dos variables concatenadas me imprime el valor numérico.

No entiendo nada.

Si alguien me pudiera dar una pista...

Muchas gracias
jlozano
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2017-08-30 03:47 @199

Publicidad

Re: Valor entero en JSON no lo captura por sí solo

Notapor explorer » 2017-08-30 10:53 @495

Bienvenido a los foros de Perl en Español, jlozano.

Yo tampoco veo nada raro...

¿No podría ser que el JSON esté mal de inicio? Por ejemplo, que cuando el valor numérico sea 0, el JSON almacene una cadena vacía.

¿Puedes publicar la parte del JSON relativa a prodGeneral, o mejor, todo el JSON (si es pequeño)?

Veo que en el código en JavaScript lo serializas y lo pasas a cadena, antes de mandarlo al perl. ¿Podemos ver el contenido del parámetro prodGeneral antes de llamar a decode_json()?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Valor entero en JSON no lo captura por sí solo

Notapor jlozano » 2017-09-08 05:29 @270

Buenas, explorer.

Perdón por la tardanza en contestar. Al final lo pude solucionar de otra manera, (sin enviar la variable, la verdad...) Gracias de todas formas, voy a molestar un poco más con otra pregunta... :wink:
jlozano
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2017-08-30 03:47 @199


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 8 invitados