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

Form en ajax (ayudanovato, desesperao y rayado xD)

Estas en el tema de Form en ajax (ayudanovato, desesperao y rayado xD) en el foro de Frameworks JS en Foros del Web. hola, bueno vamos a ver si me conseguis decir el porque de este royo que no entiendo porque me pasa...tengo un form con 2 campos ...
  #1 (permalink)  
Antiguo 27/06/2009, 05:12
 
Fecha de Ingreso: marzo-2009
Ubicación: yokze
Mensajes: 177
Antigüedad: 15 años, 9 meses
Puntos: 3
Pregunta Form en ajax (ayudanovato, desesperao y rayado xD)

hola, bueno vamos a ver si me conseguis decir el porque de este royo que no entiendo porque me pasa...tengo un form con 2 campos para login...otro archivo .php q procesa y el .js...
Cuando acierta en los datos te redirecciona a otro lao, cuando no quiero cambiar las clases..lo tipico xD
Pues bien, os enseño mi codigo porque resulta q para q funcione bien tengo q cambiar el contenido del form, por la cara ya os digo, si no lko cambio no funciona

Código PHP:
<div id="login"><form id="login-f" onSubmit="envlogin()"><label>Correo:</label><input type="text" id="correo" class="input1"><br/><br/>
<
label>Contrase&ntilde;a:</label><input type="password" id="pass" class="input1">
<
button id="botonEnviar" onClick="envlogin()" type="submit"></button>
</
form>
<
span id="envloginImg"><img src="temas/original/iconos/loading.gif">Enviando...</span>
</
div
.js
Código javascript:
Ver original
  1. onload=function() {
  2. correo=document.getElementById("correo");
  3. pass=document.getElementById("pass");
  4. form=document.getElementById("login-f");
  5. Cform=form.innerHTML;
  6. envio=document.getElementById("envloginImg");
  7. urlp="funciones/proc-login.php";
  8. }
  9.  
  10. function nuevoAjax()
  11. {
  12.     var xmlhttp=false;
  13.     try
  14.     {
  15.         // No IE
  16.         xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  17.     }
  18.     catch(e)
  19.     {
  20.         try
  21.         {
  22.             // IE
  23.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  24.         }
  25.         catch(E) { xmlhttp=false; }
  26.     }
  27.     if (!xmlhttp && typeof XMLHttpRequest!="undefined") { xmlhttp=new XMLHttpRequest(); }
  28.     return xmlhttp;
  29. }
  30.  
  31. function envlogin() {
  32.  
  33. envio.style.display="block";
  34. mail=correo.value;
  35. passw=pass.value;
  36. form.style.display="none";
  37.  
  38. var ajax=nuevoAjax();
  39.         ajax.open("POST", urlp, true);
  40.         ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  41.         ajax.send("correo="+mail+"&pass="+passw);
  42.        
  43.         ajax.onreadystatechange=function()
  44.         {
  45.             if (ajax.readyState==4)
  46.             {
  47.                 envio.style.display="none";
  48.                 var respuesta=ajax.responseText;
  49.                 if(respuesta=="OK")    {
  50.                 window.location.href="?sitio=panel";
  51.                 }                
  52.                 else {
  53.                 form.style.visibility="visible";
  54.                 if(respuesta=="correo") {correo.className="error";}
  55.                 else {pass.className="error";}
  56.                
  57.                
  58.                 }
  59.             }
  60.         }
  61. }

procesador..
Código PHP:
<?php
session_start
();
if (
$_POST) {
include (
'BD.php');
foreach(
$_POST as $clave => $valor) $$clave=addslashes(trim(utf8_decode($valor)));
$mail=mysql_escape_string($correo);
$passw=md5($pass);
$usu=mysql_query("SELECT `ID`,`Mail`,`Rango`, `Pass` FROM `Usuarios` WHERE `Usuarios`.`Mail`='$mail' LIMIT 1");
if (
$Dusu=mysql_fetch_array($usu)) {
if (
$passw==$Dusu[Pass]) {
$_SESSION[ID]=$Dusu[ID];
$_SESSION[Correo]=$Dusu[Mail];
$_SESSION[Rango]=$Dusu[Rango];
echo 
'OK';
}
else { echo 
'pass'; }
}
else { echo 
'correo';}
}
?>
Resulta q cuando dejo el mismo contenido del form, la redireccion se hace mal, se hace como un reload..total q es muy raro...
Posiblemente sea uan tonteria, pero es q me cansao de buscar. Ademas, este es mi primer script con Ajax, y bueno...alomejor estoy comentiendo fallos.

Por favor orientenme

gracias y salu2
  #2 (permalink)  
Antiguo 27/06/2009, 10:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 8 meses
Puntos: 1284
Respuesta: Form en ajax (ayudanovato, desesperao y rayado xD)

Hola:

A grandes rasgos... es bueno que uses un botón del tipo submit por lo de la accesibilidad, pero luego tienes que cancelar el envío si no quieres que el formulario se envíe...

También parece innecesario el evento onclick en un botón tipo submit... prueba quitando es onclick y el en form cancelar el envío...

Código:
<form onsubmit="envlogin(); return false">
Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 27/06/2009, 10:31
 
Fecha de Ingreso: marzo-2009
Ubicación: yokze
Mensajes: 177
Antigüedad: 15 años, 9 meses
Puntos: 3
Respuesta: Form en ajax (ayudanovato, desesperao y rayado xD)

Alucinante caricatos xD FUNCIONA PERFECTO!!

Estoy seguro que es por el return false...pero nose exactamente porque, me lo puedes explicar?

salu2
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 17:31.