Ver Mensaje Individual
  #4 (permalink)  
Antiguo 11/03/2011, 16:57
Avatar de ghidalgoram
ghidalgoram
 
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 8 meses
Puntos: 7
De acuerdo Respuesta: Recaptcha - ¿Cómo saber si el usuario escribió correctamente las palabras?

Hola maycolalvarez y foreros.

Les agradezco si me ayudan con una duda de Ajax. De Ajax, no soy experto.

Ya realicé la comprobación mediante Ajax. Es decir, por medio de Ajax, envió las dos variables que usa el Recaptcha [Recaptcha.get_response() y Recaptcha.get_challenge() ] y ya puedo saber si el usuario digitó bien ó mal las palabras. El Recaptcha se valida en el Server y devuelve por medio de Ajax la respuesta de bien ó mal. El resultado bien ó mal lo asigno a una variable Javascript. Con esta variable que digamos que se llame resultado, es la que indica si la ejecución del Form sigue ó se detiene para se digite de nuevo las palabras del Recaptcha.

Código Javascript:
Ver original
  1. var resultado = "";

Te comento que antes de que se ocurriera usar Recaptcha, yo ya estaba usando Ajax para enviar los campos de Formulario y mostrar un mensaje de "Enviando Datos....".

Ahora con el Recaptcha tuve que agregar otra función de Ajax para conectar con un archivo PHP. Les voy agregar el código:


Código Javascript:
Ver original
  1. function send_form_data()
  2. {
  3.   // Usos 2 ajaxobj.open.
  4.         // 1. Para averiguar el resultado del Recaptcha
  5.         // 2. Para enviar el formulario.
  6.  
  7.   //resp_captcha=Recaptcha.get_challenge();
  8.         nocache = Math.random();// Set te random number to add to URL request
  9.  
  10.         //1. Averiguar el resultado del Recaptcha
  11.         var param = "recaptcha_challenge_field="+Recaptcha.get_challenge()+"&recaptcha_response_field="+Recaptcha.get_response()+"&resp_captcha="+resp_captcha;
  12.  
  13.         var ruta_recaptcha="recaptcha_respuesta.php";// Aqui valido el Recaptcha y me indica si la respuesta es satisfactoria ó no se escribió bien.
  14.         var url_proc_form = ruta_recaptcha+'?nocache='+nocache;
  15.         ajaxobj.open('POST',url_proc_form,true);
  16.         ajaxobj.onreadystatechange=function(){
  17.             if(ajaxobj.readyState==4)
  18.             {
  19.               window.respuesta=ajaxobj.responseText;
  20.             }
  21.         }
  22.  
  23.         ajaxobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  24.         ajaxobj.send(param);// Con POST paso variables y con GET pongo NULL
  25.  
  26. //Hasta aqui termina el código para saber el resultado del Recaptcha

Y aqui empiezo con el segundo "ajaxobj.open('POST',url_proc_form,true);" para enviar los datos en la misma funcion " send_form_data()".



Código Javascript:
Ver original
  1. // Aquí empiezo validar todo el Formulario y que esté muy bien.
  2. //Aqui uso el segundo 'ajaxobj.open()'
  3.  
  4.  //Empiezo a validar cada campo del Form.
  5.     if(document.getElementById('campo1').value == "")
  6.     {
  7.         //acciones, no continua la ejecución del Formulario
  8.  }
  9.     else
  10.     if(document.getElementById('campo1').value == "")
  11.     {
  12.         //acciones, no continua la ejecución del Formulario
  13.  }
  14.     else
  15.     //
  16.     if(typeof(window.respuesta) == "undefined" || window.respuesta == 'Error, please try again.')
  17.     {
  18.         //acciones, no continua la ejecución del Formulario    
  19.         Recaptcha.reload();
  20.     }
  21.     else
  22.     { // Se envia el formulario, Segunda conexión de Ajax.
  23.         var campo1 = encodeURI(document.getElementById('campo1').value);
  24.         var campo2 = encodeURI(document.getElementById('campo2').value);
  25.    
  26.         nocache = Math.random();// Set te random number to add to URL request
  27.         // Paso var con POST
  28.         var param = 'campo1='+campo1+'&campo2='+campo2;
  29.        
  30.         var url_proc_form = "contact_form.php"; //Donde se envia x correo el form
  31.         ajaxobj.open('POST',url_proc_form,true);
  32.         ajaxobj.onreadystatechange=procesando_datos_msje;
  33.         ajaxobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  34.         ajaxobj.send(param);
  35.     }
  36.  
  37.         if(error_form_field[0]!=""){// si hay error en el form, muestra msje de error
  38.         mostrar_msje_error(error_form_field); }
  39.        
  40. }

Si utilizo dos veces este código en una misma función,.. debo cerrar las conexiones para que no se afecten los resultados entre ellos? ó existe alguna otra recomendación ?


Código Javascript:
Ver original
  1. ajaxobj.open('POST',url_proc_form,true);
  2.         ajaxobj.onreadystatechange=procesando_datos_msje;
  3.         ajaxobj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  4.         ajaxobj.send(param);




Gracias.
__________________
Loading...