Foros del Web » Programando para Internet » Javascript » Frameworks JS »

fallo en paso de variable

Estas en el tema de fallo en paso de variable en el foro de Frameworks JS en Foros del Web. hola a todos, tengo un error de principiante pero no se muy bien cual es el motivo, vereis, intento enviar el valor de un input ...
  #1 (permalink)  
Antiguo 28/11/2011, 11:03
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años
Puntos: 1
fallo en paso de variable

hola a todos, tengo un error de principiante pero no se muy bien cual es el motivo, vereis, intento enviar el valor de un input type text de html a traves de la funcion $.post de jquery, como solo tengo un valor en el formulario pues hago lo siguiente:


antes de nada os pongo my formulario:

Código HTML:
Ver original
  1. <form method="post" name="captchaform" id="captchaform" action="compruebaCaptcha.php">
  2. <img src="captcha.php" id="captcha" /><br/>
  3. <!-- CHANGE TEXT LINK -->
  4. <a href="#" onclick="
  5.    document.getElementById('captcha').src='captcha.php?'+Math.random();"id="change-image">No se lee? actualiza la palabra.</a><br/><br/>
  6.  
  7. <input type="text" name="captcha-form" id="captcha-form" class=":required" autocomplete="off" /><br/>
  8. <input type="submit" value="confirmar"/>
  9.  
  10. </form>



ahora os muestro el codigo javascript que contiene la codificacion con jquery:

Código Javascript:
Ver original
  1. <script>
  2.  
  3. var captcha = $("#captcha-form").val();
  4.  
  5.  
  6. $("#captchaform").submit(function(event){
  7.     //alert("hola");
  8. event.preventDefault();
  9.     $.post("compruebaCaptcha.php", { valor: captcha }, function(data){
  10.         //$("#respuestaCaptcha").html(data);
  11.         });

el problema me lo esta linea: var captcha = $("#captcha-form").val();

q no me coge el valor del input type text,

probe poniendo tb: var captcha = $("#captcha-form").attr('value');

pero no me coge el valor

sigo el paso de variables y todo con frebug y manda la variable x post pero va vacia




gracias
  #2 (permalink)  
Antiguo 28/11/2011, 12:52
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: fallo en paso de variable

¿lo que no entiendo es el doble POST?: no es mejor enviar el captcha en la misma petición???

entrando en el tema:

¿el input tiene como ID captcha-form?: te recuerdo que para jQuery el # como en CSS selecciona por ID y no por NAME
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 28/11/2011, 16:15
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: fallo en paso de variable

Personalmente lo haría así:

Código Javascript:
Ver original
  1. $("#btn_form").click(function(e){
  2.     e.preventDefault();
  3.     var captcha = $("#captcha-form").val();
  4.     $.post("compruebaCaptcha.php", { valor: captcha }, function(data){
  5.         //$("#respuestaCaptcha").html(data);
  6.     });
  7. });

No está probado pero debería andar. #btn_form es:
Código HTML:
Ver original
  1. <input type="button" id="btn_form" value="Enviar" />

Saludos
  #4 (permalink)  
Antiguo 29/11/2011, 05:39
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años
Puntos: 1
Respuesta: fallo en paso de variable

ya consegui pasar la variable, lo hice de la siguiente manera:
Código Javascript:
Ver original
  1. <script>
  2.  
  3. $("#captchaform").submit(function(event){
  4.     //alert("hola");
  5. event.preventDefault();
  6.    
  7.     $.ajax({
  8.         type: "post",
  9.         url: "compruebaCaptcha.php",
  10.         data: $("#captchaform").serialize(),
  11.         success: function(data){
  12.             $("#verificaCaptcha").hide(function(){$('div.msg').fadeIn('slow').fadeOut(6000)});
  13.            
  14.             $("#verificaCaptcha").html(data);
  15.            
  16.             //$().append(html);
  17.            
  18.         }
  19.     });
  20. });
  21.  
  22. </script>
  23. <div id="verificaCaptcha" class="msg" style="display:none;">
  24.  
  25. </div>


pero al resolver esto me surgio otra duda, vereis, proceso en la pagina compruebaCaptcha.php el captcha de la siguiente manera:

Código PHP:
Ver original
  1.  
  2. if (!empty($_POST['captcha-form'])) {
  3.     if (empty($_SESSION['captcha']) || trim(strtolower($_POST['captcha-form'])) != $_SESSION['captcha']) {
  4.         echo($captcha_message = "vuelve a intentarlo");
  5.     } else {
  6.         echo($captcha_message = "captcha valido");
  7.     }
  8.  
  9.     //$request_captcha = htmlspecialchars($_POST['captcha-form']);
  10.  
  11.     //echo $captcha_message;
  12.      
  13.     unset($_SESSION['captcha']);
  14. }

este codigo comprueba el captcha y en caso de q sea correcto envia el mensaje cptcha valido y lo muestra en
<div id="verificaCaptcha" class="msg" style="display:none;">
</div>

ahora mi pregunta es:

como puedo hacer para q si es correcto el captcha aparezca otro div q contiene el formulario para q introduzca la direccion de correo electronico. esq probe a hacerlo poniendo
$("#muestraFormEmail").hide(function(){$('div.msg' ).fadeIn('slow').fadeOut(6000)});
debajo de
$("#verificaCaptcha").html(data);

pero asi aunq sea un captcha incorrecto me muestra siempre el formulario para introducir la direccion de correo electronico. como podria hacer para q en caso de q sea correcto aparezca el div y en caso de q sea incorrecto no aparezca nada?



gracias

Etiquetas: fallo, formulario, funcion, html, javascript, jquery, paso, php, 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 16:59.