Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/03/2012, 18:28
Avatar de catpaw
catpaw
 
Fecha de Ingreso: mayo-2010
Ubicación: xalapa
Mensajes: 856
Antigüedad: 14 años, 10 meses
Puntos: 23
solo chrome ejecuta bien readyState y responseText, que pasa con ie y mozilla?

Hola gente,

verán en mi web en la sección de opiniones se pueden subir opiniones e imágenes,

http://www.buzonxalapa.com/opiniones...ar_opinion.php

esto funciona bien en chrome pero en ie y mozilla pasa algo raro,

cuando capturo bien todo el form, incluyendo el captcha, si guarda la opinion,

pero si dejo el espacio vacio del captcha o lo pongo mal se queda la imagen de loading, es decir, se queda en el ajax.readyState 1

en cambio en chrome si me dice que el captcha esta mal.

aca esta el script ajax:

Código:
function ajaxFunction(){
  var xmlHttp;
  
  try{
  	xmlHttp=new XMLHttpRequest();
    return xmlHttp;
  } 
  catch (e){
	  try{
      	xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      	return xmlHttp;
      } 
	  catch (e){
      	try{
        	xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        	return xmlHttp;
		} 
		catch (e) {
        alert("Su navegador no soporta AJAX!");
        return false;
      	}
	  }
  }
}
function procesar_opinion(){

//recibo variables
	var autor_opinion= document.getElementById('autor_opinion').value;
	var email_opinion= document.getElementById('email_opinion').value;
	var fecha_opinion= document.getElementById('fecha_opinion').value;

//estas son las correspondientes al captcha
        var desafio = Recaptcha.get_challenge();
	var solucion = Recaptcha.get_response();

var ajax;
ajax= ajaxFunction();
										
ajax.open("GET", "procesar_opinion.php?recaptcha_challenge_field="+desafio+"&recaptcha_response_field="+solucion+"&autor_opinion="+autor_opinion+"&email_opinion="+email_opinion+"&fecha_opinion="+fecha_opinion, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.onreadystatechange = function() {
											
  if (ajax.readyState == 1){ //si el captcha esta mal o vació de aquí no pasa (mozilla o ie)
             document.getElementById('form_opinion').innerHTML= "<center><img src='loader.gif' alt='Procesando'><br><br> Procesando opinión, espere por favor...</center>";
  }
  if (ajax.readyState==4){ 
     if(ajax.status==200){
        var respuesta = ajax.responseText; //retorno incorrecto si el captcha es erroneo, aqui tambien puede estar el error, que no retorne bien esta variable en mozilla o ie
        if (respuesta.length == 0 || respuesta == null){ //si no hay respuesta error
            alert("Ocurrio un error en el envío, por favor contacte al administrador. Disculpe las Molestias");
        }
        else{
            if(respuesta=="incorrecto"){ //si el captacha esta mal el php devuelve incorrecto
              alert("Captcha incorrecto");
              Recaptcha.reload();
	    }
 	    else{ //si todo salio bien
               $('#form_opinion').hide(1000);
               $('#uploadify').show(1000);
	   }
        }
    }
  }
ajax.send(null);
}
y el php que valida es este:

Código PHP:
$resp recaptcha_check_answer ($privatekey,
                                
$_SERVER["REMOTE_ADDR"],
                                
$_GET["recaptcha_challenge_field"],
                                
$_GET["recaptcha_response_field"]);
if(!
$resp->is_valid){
    echo 
"incorrecto";  //si esta mal el captcha devuelve error
    
exit();
}
else{  
//si no inserta a la bd        
        
$autor_opinion=trim($_GET['autor_opinion']);
        
$email_opinion=trim($_GET['email_opinion']);
        
$fecha_opinion=trim($_GET['fecha_opinion']);
        
        
$sql_insert="Insert into opiniones (autor_op, email_op, fecha_op) values ('$autor_opinion', '$email_opinion', '$fecha_opinion')";
        
mysql_query($sql_insert) or die('Error en la inserci&oacuten: '.mysql_error());
        echo 
"ok"//imprime ok para que no caiga en respuesta vacia y sea error
        
exit();

no se que este afectando para que ie y mozilla tengan problemas, chrome va ok, lo que me indica que el script esta bien, debe haber alguna configuración o que se yo que no este funcionando en los otros

les agradezco sus observaciones