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

problema al enviar checkbox con ajax

Estas en el tema de problema al enviar checkbox con ajax en el foro de Frameworks JS en Foros del Web. hola amigos tengo un problema, Hize un sistema de login con php y ajax y pues ya funciona lo unico que me falla es recibir ...
  #1 (permalink)  
Antiguo 24/11/2009, 22:14
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 21 años
Puntos: 0
Exclamación problema al enviar checkbox con ajax

hola amigos tengo un problema, Hize un sistema de login con php y ajax y pues ya funciona lo unico que me falla es recibir el checkbox que dice si los va a recordar la pagina o no. El problema es que siempre me envia el mismo valor este activada o no y no se cual sea el problema.
les pongo el codigo

el formulario:
Código HTML:
<div id="Socios">
<div class="izq">
<h1>&iexcl;&Aacute;rea de Socios!</h1><br />
<fieldset>
<form name="login" action="javascript:GuardarRegistro();" autocomplete="off" method="POST">
<table>
	<tr>
		<td colspan="2" bgcolor="#C10000"><div> .: L O G I N :. </div></td>
	</tr>
	<tr>
		<td><br />Usuario</td>
		<td><br /><input type="text" name="user" size="20" maxlength="35"></td>
	</tr>
	<tr>
		<td><br />Password&nbsp;&nbsp; </td>
		<td><br /><input type="password" name="pass" size="20" maxlength="50"></td>
	</tr>
	<tr>
		<td colspan="2"><br /><center><input type="image" title="Login" src="css/images/ingresar.png" alt="Login" /><br />
		    <input type="checkbox" name="recordar" value="1" id="recordar"/>
		    Recordarme
</center><div id="Resultado" align="center"></div></td>
	</tr>
</table>
</form>
</fieldset>
</div>
<div class="der"><img src="css/images/sociedad.jpg" border="0" width="240" /></div>
</div> 
el ajax
Código HTML:
function objetoAjax(){ 
    var xmlhttp=false; 
    try { 
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
    } catch (e) { 
        try { 
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
        } catch (E) { 
            xmlhttp = false; 
          } 
    } 
 
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') { 
        xmlhttp = new XMLHttpRequest(); 
    } 
    return xmlhttp; 
} 
 String.prototype.tratarResponseText = function() {
		
		var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
		var pat2=/\b\s+src=[^>\s]+\b/g;
		var elementos = this.match(pat) || [];
		
		for (i = 0; i < elementos.length; i++) {
			
			var nuevoScript = document.createElement('script');
			nuevoScript.type = 'text/javascript';
			var tienesrc=elementos[i].match(pat2) || [];
			
			if (tienesrc.length) {
				nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
			}
			else {
				
				var elemento = elementos[i].replace(pat,'$1');
				nuevoScript.text = elemento;
				
			}
			
			document.getElementsByTagName('body')[0].appendChild(nuevoScript);
			
		}
		
		return this.replace(pat,'');
	} 


function GuardarRegistro(){ 
  //donde se mostrará lo resultados 
  divResultado = document.getElementById('Resultado');
  divResultado.innerHTML= '<font color="red">Comprobando datos</font><br><img src="javascript/loader.gif">'; 
  //valores de las cajas de texto  
  user=document.forms.login.user.value; 
  pass=document.forms.login.pass.value;
  recordar=document.getElementById('recordar').value;
 
  //instanciamos el objetoAjax 
 
  ajax=objetoAjax(); 
  //uso del medoto POST 
  //archivo que realizará la operacion 
  //registro.php 
  ajax.open("POST", "autentificacion.php",true); 
  ajax.onreadystatechange=function() { 
    if (ajax.readyState==4) { 
    //mostrar resultados en esta capa
	divResultado.innerHTML =ajax.responseText.tratarResponseText();
    //llamar a funcion para limpiar los inputs 
    } 
  } 
  ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
  //enviando los valores 
  ajax.send("user="+user+"&pass="+pass+"&recordar="+recordar)
} 
el php que procesa el formulario
Código PHP:
<?
    $user
=$_POST["user"];
    
$pass=$_POST["pass"];
    for(
$x=0;$x<10000000;$x++){}
    if (
$user=="ixtleco" and $pass=="samuel"){ 
        
//usuario y contraseña válidos 
        //defino una sesion y guardo datos 
        
session_start(); 
        
$_SESSION["autentificado"]="si";
        if(
$_POST['recordar']=="on")
        {
        
setcookie("autentico","si",time()+86400*365); 
        }
            echo 
$_POST['recordar'];
        exit;
    }else{
        echo 
"<div><font color=red>Access Denied!!!</font></div>";
    
    }
?>
la pagina del formulario se incluye en otra que ya tiene el js.
Les comento el script funciona excepto que siempre envia como si estuviera siempre activada que podria ser??
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #2 (permalink)  
Antiguo 25/11/2009, 06:48
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 16 años
Puntos: 19
Respuesta: problema al enviar checkbox con ajax

Tu error no es AJAX sino de concepto los checkboxes cuando estan marcados tienen un valor no un valor Bool sino el valor que le pones en la propiedad value, y cuando no los marcas nisiquiera se setean, toma en consideracion eso para reprogramar tu PHP.
  #3 (permalink)  
Antiguo 25/11/2009, 12:21
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 21 años
Puntos: 0
Respuesta: problema al enviar checkbox con ajax

si de hecho lo hize l principio le ponia el value y me enviaba estuviera encendido o no el valor y lo deje en blanco para que envie el valor que envia por default osea on u off pero tampoco me sigue enviando como si estuviera activada
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #4 (permalink)  
Antiguo 25/11/2009, 12:25
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: problema al enviar checkbox con ajax

Es que primero debes verificar si el checkbox fue marcado:
Código Javascript:
Ver original
  1. var chkrecordar = document.getElementById("recordar");
  2. if (chkrecordar.checked) {
  3.     var recordar = chkrecordar.value;
  4. }
Y, si no está marcado, ni siquiera enviar esa variable (&recordar)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 25/11/2009, 12:47
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 21 años
Puntos: 0
Respuesta: problema al enviar checkbox con ajax

y con ese if evitas que se envie la variable, disculpa que pregunte esque no se mucho de ajax
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #6 (permalink)  
Antiguo 25/11/2009, 13:06
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: problema al enviar checkbox con ajax

No, con ese if lo que haces es sólo asignar el valor a la variable recordar si el checkbox está seleccionado. Podrías hacer algo como:
Código Javascript:
Ver original
  1. var chkrecordar = document.getElementById("recordar");
  2. var recordar = (chkrecordar.checked) ? "&recordar=" + chkrecordar.value : "";
  3. // ...
  4. ajax.send("var=valor&otro=valor" + recordar);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 25/11/2009, 16:28
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 21 años
Puntos: 0
Exclamación Respuesta: problema al enviar checkbox con ajax

bueno ya hize una prueba pero ahora ya no envia nada este es el codigo

Código HTML:
function GuardarRegistro(){ 
  //donde se mostrará lo resultados 
  divResultado = document.getElementById('Resultado');
  divResultado.innerHTML= '<font color="red">Comprobando datos</font><br><img src="javascript/loader.gif">'; 
  //valores de las cajas de texto  
  user=document.forms.login.user.value; 
  pass=document.forms.login.pass.value;
  recordar=document.getElementById('recordar').value;
 
  //instanciamos el objetoAjax 
 
  ajax=objetoAjax(); 
  //uso del medoto POST 
  //archivo que realizará la operacion 
  //registro.php 
  ajax.open("POST", "autentificacion.php",true); 
  ajax.onreadystatechange=function() { 
    if (ajax.readyState==4) { 
    //mostrar resultados en esta capa
	divResultado.innerHTML =ajax.responseText.tratarResponseText();
    //llamar a funcion para limpiar los inputs 
    } 
  } 
  //enviando los valores 
  ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  if (recordar.checked) {
	  var rec = recordar.value;
	  var rec = (recordar.checked) ? "&recordar=" + recordar.value : "";
	  ajax.send("user="+user+"&pass="+pass+"&recordar="+rec)
	  }else{
  ajax.send("user="+user+"&pass="+pass)
	  }
} 
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #8 (permalink)  
Antiguo 25/11/2009, 20:43
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años, 7 meses
Puntos: 839
Respuesta: problema al enviar checkbox con ajax

No estás haciendo de la misma forma como te indiqué. En lugar de recuperar el objeto, estás recuperando el value, y vuelves a concatenar con "&recordar" en el método send(), lo cual es innecesario. Revisa bien el ejemplo que puse.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 01:58.