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

new Ajax.Updater

Estas en el tema de new Ajax.Updater en el foro de Frameworks JS en Foros del Web. Ke tal. Tengo un problema ojala alguien me pueda ayudar tengo un formulario el cual valida con ajax si el usuario existe. <div id="container"> <p> ...
  #1 (permalink)  
Antiguo 23/06/2008, 16:47
 
Fecha de Ingreso: junio-2008
Ubicación: SLP
Mensajes: 41
Antigüedad: 15 años, 10 meses
Puntos: 0
new Ajax.Updater

Ke tal. Tengo un problema ojala alguien me pueda ayudar

tengo un formulario el cual valida con ajax si el usuario existe.

<div id="container">
<p>
<input type="text" name="txtUsuario" id="txtUsuario" onblur="checkUserName();" maxlength="20" onkeyup="this.value=this.value.toUpperCase()"></input>
<span id="txtUsuarioValid" ></span>
<script type="text/javascript">
Event.observe('txtUsuario', 'keyup', checkUserName);
function checkUserName()
{
txtUsuario = $('txtUsuario').value;
var X;
new Ajax.Updater('txtUsuarioValid', '../scripts/ajax/checkUserName.php?name='+txtUsuario);
}
</script>
</p>
</div>

En checkUserName.php hago la consulta y si existe
pongo esto

die('<span style="font-weight:bold;color:red;font-size:12px;">'.$name.' ya existe !</span>');

Esto ya funciona y me pone si existe o no en un <span id="txtUsuarioValid" ></span> . Lo que quiero es que si existe el usuario que se bloque el boton de enviar o la siguiente caja de texto con el fin de evitar que el usuario envie su formulario si existe el user.

Ojal puedan echarme la mano...
  #2 (permalink)  
Antiguo 24/06/2008, 13:22
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 20 años, 1 mes
Puntos: 11
Respuesta: new Ajax.Updater

Hola mmm24.. mira, el updater de prototype es para agregar o sustituir contenidos en algún contenedor de tu DOM, para lo que quieres estas pasando algo de lógica a tu javascript de vuelta y la forma adecuada de hacerlo es pasarle alguna estructura XML o JSON construido desde PHP para que desde el cliente sepas cual fue el resultado de ver si existia el usuario. aqui abajo te pongo un código que usa request en ves de updater que evalue JSON por su facilidad.


Código HTML:
<script type="text/javascript">
//<![CDATA[

// funcion para hacer la solicitud asyncronica
function fetchStatus(){
new Ajax.Request('ajaxcontrol.php',
  {
    method:'get',
	parameters: { textbox: $("txtUsuario").value },
    onSuccess: leeJSON
  });
}


// funcion que lee el resultado de JSON y según tu lógica de PHP construyes la respuesta
function leeJSON(resp){
var existe="";
var jsonTexto=resp.responseText;
var jsonObj=eval("("+jsonTexto+")");
existe=jsonObj.usuario.existe;

if(existe == "si"){
alert("si existe"); // aqui ya puedes manejar tu DOM a como necesites. por ejemplo insertar cocntenido en txtUsuarioValid o bien disabled algunos campos, ya tu decides con el resultado de "existe"
$("segundo").disabled = "disabled"; // o disable("segundo");
// 
}

}

Event.observe(window, 'load', function() {
 Event.observe('txtUsuario', 'blur', fetchStatus);
});

//]]
</script>


<p>
<input type="text" name="txtUsuario" id="txtUsuario" maxlength="20" onkeyup="this.value=this.value.toUpperCase()"></input><br /><br />
<input type="text" id="segundo" name="segundocampo" />
<span id="txtUsuarioValid" ></span>
</p> 


en tu php construyes el json, si tienes dudas del formato JSON ve aquí http://www.json.org/

Código PHP:
<?php
// aqui toda tu lógica PHP
if( $_GET['textbox'] ){

echo(
'{"usuario": {
"existe": "si"
}}'
);

}
exit;

?>

bueno un saludo, espero te sirva.
__________________
http://dev.wsnetcorp.com
  #3 (permalink)  
Antiguo 05/07/2008, 22:37
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 20 años, 1 mes
Puntos: 11
Respuesta: new Ajax.Updater

Hola,

si todavia andas por ahi al menos comenta como te fue y que hiciste, saber porque?? todos estamos en el mismo medio

enseñame algo que no sepa y lo atesoraré grandemente.

PD: o que otras opciones miran ustedes??


un slaudo

ebe
__________________
http://dev.wsnetcorp.com
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 20:24.