ajax no envia variable

Iniciado por .rn3w., 17 Septiembre 2016, 08:14 AM

0 Miembros y 1 Visitante están viendo este tema.

.rn3w.

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 (javascript) [Seleccionar]

[code]
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";
   var copiando;


       $(function () {
           var captureInput = $('.clickme');
           $(captureInput).focus();
               $(captureInput).keyup(function(event){

                   startUPDOWN= (new Date()).getTime();
                   if (!is_special_key(event.keyCode)) {
                       var delta= startUPDOWN - startPressUP;

                       copiando=delta;
                       key_cadaTecla.push(new claves(event.keyCode,tiempoPulsacion));

                       document.getElementById("keyCadaTecla").innerHTML = "tiempo de cada tecla:  ";
                       for (var i = 0; i < key_cadaTecla.length; i++) {
                               var result=document.createTextNode("("+key_cadaTecla[i].id+" "+key_cadaTecla[i].time+")");
                               document.getElementById("keyCadaTecla").appendChild(result);
                           };
                       document.getElementById("ult").innerHTML = "tiempo de Press a Up:   " + delta ;
                       teclaActual=event.keyCode;
                   };  
                   tiempoPulsacion=0;
               });
       });


$(window).on('load', function() {          

   var id = 'idUsuario';
   $('#add-new-fact').click(function() {
   var fact = $('#new-fact').val();
   $.ajax({
     type: "POST",
     url: "/servidor",
     data: { fact: copiando},
    // contentType: "application/json; charset=utf-8",
     dataType: "json",
     success: function(data) {
       alert("si");
       $('<li>').appendTo('#facts').text(fact);
       $('#new-fact').val('');
     },
     error: function(err) {
       var msg = 'Status: ' + err.status + ': ' + err.responseText;

       document.open("text/html", "replace");
       document.write(err.responseText);
       document.close();
     }
   });
   return false;
 });

       });
[/code]

Jeferi

#1
Código (javascript) [Seleccionar]
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?

.rn3w.

y si quiero enviar un array, seria lo mismo?

Jeferi

Cita de: .rn3w. en 17 Septiembre 2016, 15:54 PM
y si quiero enviar un array, seria lo mismo?

Sí. Puedes enviar un array también.

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

.rn3w.

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"

Jeferi

Haz post de la parte del servidor que maneja esta petición (donde hacer console.log de copiando)

.rn3w.

app.post('/servidor', function(req,res){
   
    console.log(req.body.fact);
   
});


ese es el codigo del servidor

.rn3w.

para solucionarlo tuve que serializarlo

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

y funciono!!! muchas gracias Jeferi