Problemas con ajax y javascript

Hola,
Lo que necesito hacer con javascrip y ajax es validar la existencia de un dato en la base de datos.
En la extensión del formulario tengo lo siguiente:

 
{$this->objeto_js}.evt__validar_datos = function()
		{
			var valor_retorno = true;
			if  (this.ef('evento').get_estado_con_formato() == 'agregar'){
				if (this.ef('escerokm').get_estado() == 'N')
				{
					if (this.ef('dominio').get_estado() == '')
					{
						notificacion.agregar('Debe ingresar el dominio.');
						this.ef('dominio').seleccionar();
						valor_retorno = false;
					}
					else {
						valor_retorno = false;
						this.controlador.ajax('verificar_dominio', this.ef('dominio').get_estado(), this, this.alertar_dominio_duplicado);
					}
				}
			}
			return valor_retorno;
		}


		{$this->objeto_js}.alertar_dominio_duplicado = function(respuesta)
		{
			if(respuesta){
				alert('El dominio ya existe. Ingrese otro.');
			}
		}

En el CI tengo la función verificar_dominio:


function ajax__verificar_dominio($datos, toba_ajax_respuesta $respuesta)
	{
              $existe=$this->get_relacion()->tabla('moviles')->get_existe_dominio($datos['dominio']);
              $respuesta->set($existe);
	}

La función get_existe_dominio esta en otro php.
En el evt__validar_datos, en las lineas:

valor_retorno = false; this.controlador.ajax('verificar_dominio', this.ef('dominio').get_estado(), this, this.alertar_dominio_duplicado);

Si mantengo la variable valor_retorno en false, al guardar (con el evento Guardar a nivel CI) el ajax al validar la existencia del dato en la base de datos emite el alert. Si el dato no existe no hace nada creo que es por la variable valor_retorno que se encuentra en false. Si no coloco la variable valor_retorno en false la asume como true y me guarda el registro exista o no, pasa derecho a guardar.
Espero alguien pueda decirme que es lo que me está faltando, sobrando o si tengo que usar otro evento en vez del evt__validar_datos.

Saludos.
Lorena

Hola Lorena,

el detalle creo que esta en el lugar que elegiste para poner el codigo, el resto esta bien.

Como los pedidos ajax son asincronicos, el submit se sigue procesando y por tanto te envia a guardar el formulario independientemente de la respuesta al pedido ajax.

Efectivamente la variable valor_retorno te esta manejando el proceso de submit, ya que al volver en false se asume que no se validaron los datos y por tanto se interrumpe dicho proceso.

Contame un poco mas que queres hacer, hasta donde veo pareciera ser que toda esta validacion responde a un evento en particular y al valor de dos efs.
Quizas podrias realizar parte de la validacion en los evt de validacion de uno de los efs, solicitando el estado del otro… para al menos tener la seguridad de que los datos estan bien, independientemente del evento.

Saludos

Hola Richard.
Lo que quiero hacer es que al Guardar se realice la validación del dato ingresado en el ef(dominio) con la base de datos, esto sólo cuando se trate del evento Agregar y cuando el ef(escerokm) tenga el valor ‘N’. Quizá lo que tenga usar es otro evento al extender el formulario y no el que estoy usando actualmente… No se si se entiende bien…
La verdad desconozco bastante el manejo de ajax y javascript por eso me cuesta saber en que le estoy errando. Aprovecho para pedirte, si es posible, tener acceso a la información del curso de Toba Avanzado. Se que en ese curso se ve algo de javascript y ajax. Será posible que de alguna manera me puedan enviar el proyecto y la base de datos que utilizaron en el curso?
Desde ya muchas gracias!

Lorena

Hola Lorena,

si si, se entiende… el tema es que dicha validacion entonces solo vas a poder hacerla en ese evento, digamos… tendrias que lanzarla en el evt__agregar , o como venis haciendo dejarla en el validar datos…el tema es que necesariamente por el caracter asincronico de ajax vas a necesitar una bandera que te permita o no el envio de los datos, segun la respuesta del server.

Lo malo de eso, es que aun cuando el dato este bien… el submit no se va a realizar y vas a tener que darle 2 veces al boton de agregado.
Lo que se podria hacer es presentar una notificacion siempre que haya respuesta, de esa manera se “justifica” un poco mas presionar 2 veces el boton.

Aprovecho para pedirte, si es posible, tener acceso a la información del curso de Toba Avanzado. Se que en ese curso se ve algo de javascript y ajax. Será posible que de alguna manera me puedan enviar el proyecto y la base de datos que utilizaron en el curso?

Para el curso se usa una VM, me voy a poner en contacto con los chicos de comunicacion a ver como te la pueden hacer llegar.

Saludos

Hola Richard,
probe en la extension del formulario con los eventos procesar y salieron los controles que intentaba efectuar… igualmente voy a probar con el evt__agregar
En cuanto a la MV, yo tengo la que se usó en el curso inicial de toba. Si no es mucha molestia, lo que me podrían enviar es el proyecto y la base del curso avanzado (indicándome la versión de toba y postgres) y yo los levanto en la MV que tengo.

Bueno, desde ya muchas gracias por responder mis dudas y solicitudes!!! :slight_smile:

Saludos.
Lorena

Hola, yo tbn estoy intentando hacer uso de las validaciones javascript y me gustaria tener acceso a la información del curso de Toba Avanzado. Por lo que comentan que explican casos de javascript y ajax. Será posible que de alguna manera me puedan enviar el proyecto y la base de datos que utilizaron en el curso?
Desde ya muchas gracias