Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: .rn3w. en 17 Septiembre 2016, 08:14 am



Título: ajax no envia variable
Publicado por: .rn3w. en 17 Septiembre 2016, 08:14 am
este es mi codigo, para enviar la variable "copiando", pero solo muestra por consola undefined
estoy usando nodejs
quiero enviar de un archivo js una variable llamada copiando hacia app.js

Código
  1. [code]
  2. var texto="no existe 1 rayo zapato zanahorea karaoke Whisky software wikipedia jinete japon jabon facil frio rayo yogur habil hablar galleta gigante gentil valiente vehiculo vegetariano quebrado quemado botella bandido brazil baile patata patria palabra marcial maqueta manantial caballero temperatura tercero ubicar urgente delfin delgado danza lectura laboratorio ilusivo inadvertencia ilimitado nacido narrado racionalidad radiactivo racismo satelite septiembre obstruir oscilatorio elogioso embajada emblema abundancia kiwi";
  3.    var copiando;
  4.  
  5.  
  6.        $(function () {
  7.            var captureInput = $('.clickme');
  8.            $(captureInput).focus();
  9.                $(captureInput).keyup(function(event){
  10.  
  11.                    startUPDOWN= (new Date()).getTime();
  12.                    if (!is_special_key(event.keyCode)) {
  13.                        var delta= startUPDOWN - startPressUP;
  14.  
  15.                        copiando=delta;
  16.                        key_cadaTecla.push(new claves(event.keyCode,tiempoPulsacion));
  17.  
  18.                        document.getElementById("keyCadaTecla").innerHTML = "tiempo de cada tecla:  ";
  19.                        for (var i = 0; i < key_cadaTecla.length; i++) {
  20.                                var result=document.createTextNode("("+key_cadaTecla[i].id+" "+key_cadaTecla[i].time+")");
  21.                                document.getElementById("keyCadaTecla").appendChild(result);
  22.                            };
  23.                        document.getElementById("ult").innerHTML = "tiempo de Press a Up:   " + delta ;
  24.                        teclaActual=event.keyCode;
  25.                    };  
  26.                    tiempoPulsacion=0;
  27.                });
  28.        });
  29.  
  30.  
  31. $(window).on('load', function() {          
  32.  
  33.    var id = 'idUsuario';
  34.    $('#add-new-fact').click(function() {
  35.    var fact = $('#new-fact').val();
  36.    $.ajax({
  37.      type: "POST",
  38.      url: "/servidor",
  39.      data: { fact: copiando},
  40.     // contentType: "application/json; charset=utf-8",
  41.      dataType: "json",
  42.      success: function(data) {
  43.        alert("si");
  44.        $('<li>').appendTo('#facts').text(fact);
  45.        $('#new-fact').val('');
  46.      },
  47.      error: function(err) {
  48.        var msg = 'Status: ' + err.status + ': ' + err.responseText;
  49.  
  50.        document.open("text/html", "replace");
  51.        document.write(err.responseText);
  52.        document.close();
  53.      }
  54.    });
  55.    return false;
  56.  });
  57.  
  58.        });
[/code]


Título: Re: ajax no envia variable
Publicado por: Jeferi en 17 Septiembre 2016, 13:39 pm
Código
  1. if (!is_special_key(event.keyCode)) {

Puede que al no entrar en esa condición nunca se defina copiando y por lo tanto envíe undefined
Depura el código y comprueba que copiando se define en algún momento.
¿Estás seguro que esa función está definida?
¿Está startPressUP definido en algún sitio?


Título: Re: ajax no envia variable
Publicado por: .rn3w. en 17 Septiembre 2016, 15:54 pm
y si quiero enviar un array, seria lo mismo?


Título: Re: ajax no envia variable
Publicado por: Jeferi en 17 Septiembre 2016, 16:47 pm
y si quiero enviar un array, seria lo mismo?

Sí. Puedes enviar un array también.

Código
  1. $.ajax({
  2.    ...,
  3.    data: { parametro: [1, 2, 3, 4] },
  4.    ....
  5. }


Título: Re: ajax no envia variable
Publicado por: .rn3w. en 17 Septiembre 2016, 17:15 pm
pero si:

lo vuelvo array la variable "copiando" solo para probar si funciona !!! arriba declaro var copiando=[]; y en vez de copiando=delta; lo modifique asi: copiando.push(delta);

y el resultado es "undefined"


Título: Re: ajax no envia variable
Publicado por: Jeferi en 17 Septiembre 2016, 19:09 pm
Haz post de la parte del servidor que maneja esta petición (donde hacer console.log de copiando)


Título: Re: ajax no envia variable
Publicado por: .rn3w. en 18 Septiembre 2016, 02:07 am
Código:
app.post('/servidor', function(req,res){
   
    console.log(req.body.fact);
   
});

ese es el codigo del servidor


Título: Re: ajax no envia variable
Publicado por: .rn3w. en 18 Septiembre 2016, 05:12 am
para solucionarlo tuve que serializarlo

asi:
Código:
data: { fact: JSON.stringify(copiando)},

y funciono!!! muchas gracias Jeferi