Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/02/2010, 15:19
DarkMaurice
 
Fecha de Ingreso: abril-2007
Ubicación: Chile
Mensajes: 27
Antigüedad: 17 años, 7 meses
Puntos: 0
Pasar parametro php a javascript por ajax (Prototype)

Hola amigos, les escribo por el siguiente problema, resulta que estoy haciendo un sistema de administración, y la forma de loguearse la hice con ajax.updater de prototype, así si se loguean reviso con php y si hay error, por ejemplo, imprimo: "Error", si está ok pongo "Ok, logueado".

Ahora cuando está ok necesitaba redireccionar a la página de administración y al hacerlo por php descubrí que se imprime toda la página de administración en el div de respuesta de la página para logear. Entonces averiguando veo que tengo que hacerlo por javascript (window.locate), pero aquí empieza mi gran problema. Resulta que no sé como diferenciar en el ajax.updater cuando el login es correcto y que redireccione, ya que si pongo en el onComple la redirección la hará para todo proceso correcto, incluido cuando hay un error de password o usuario inexistente, y en estos casos solo quiero mostrar el mensaje en el div que hubo un error. Por lo tanto la unica salida que veo es enviar un parametro (login = 1 , login = 0) desde el php al javascript y así este puede decidir si redirecciona o si deja que se muestre el mensaje en el div.


Código:
function valida(){
	var llamada = 0;
        var contenedor = "avisar";
        var user = $F('usuario');
        var pass = $F('password');
        var opcion = "validar";
        var url   = "ajax.php";
        if(usuario == '' || password == ''){
          alert("Debe completar alguno de los campos");
          return false;
        }
        //parámetros necesarios para Ajax.Updater
        var params = "user="+usuario+"&pass="+password+"&opcion="+opcion;
        //envía datos por Ajax
        var ajx = new Ajax.Updater(contenedor,
                                                url,
                                                {method:"post",
                                                parameters:params,
                                                onComplete: function( resp ){$(contenedor).show(); new Effect.Highlight(contenedor, { startcolor: '#ffff99',endcolor: '#eef8d5' });}
                                                }
                                        );
Gracias por su ayuda,

Saludos