Confirmación de enviar email después de guardar

Buenos días, tengo un requerimiento en el que los usuarios quieren que luego de guardar o modificar los datos de una tabla, (evento procesar a nivel CI) les arroje una pregunta en la que decidan si quieren informar o no los cambios vía email (correo electrónico) a todos los usuarios involucrados. El esquema que me plantee es en el evento validar_datos del frm, arrojar la confirmación, tomar esa respuesta, mandarla desde JS a una función del CI en la cual le setee el valor de esa respuesta a una variable de sesión, y después ocupar esa variable de sesión en el evento procesar, donde una vez guardado le envío el mail.
Hasta acá todo color de rosas, excepto que no funciona, por alguna extraña razón si pongo el mismo código en un evento procesar de cualquiera de los efs (solución altamente impráctica porque a priori no se cuales son los campos que van a modificar) funciona perfectamente, ahora si lo hago en el validad datos, no llego a la funcion del CI; tampoco me arroja errores a nivel JS ya que la instrucciones que siguen se ejecutan sin problemas. Estoy utilizando toba 2.4. Adjunto extractos del código utilizado:

Extension del frm

//---- Validacion general ----------------------------------
		
		{$this->objeto_js}.evt__validar_datos = function()
		{
			var confirma = true;
		            confirma = confirm('Desea enviar una correo electronico informando los cambios?');
		            if (confirma) {
		                   this.controlador.ajax('establecer_respuesta_email', confirma, this, this.actualizar_datos);      
		            }
		            
		            return true;
		}
		
		{$this->objeto_js}.actualizar_datos = function(resultado)
		{
			 alert(resultado);
		}

Funcion AJAX en el CI controlador

//-----------------------------------------------------------------------------------
	//---- AJAX -------------------------------------------------------------------------
	//-----------------------------------------------------------------------------------
	
	function ajax__establecer_respuesta_email($decision, toba_ajax_respuesta $respuesta)
	{
		$this->s__decision = $decision;
		$respuesta->set('OK');    
	}

Desde ya muchas gracias por la ayuda. Saludos.

Hola Facundo,

un detalle, no seria mas sencillo enviar esa decision como parte del mismo formulario que envias?.. digo, tranquilamente la podes incluir en un campo hidden en lugar de pasarla por ajax.

Tene en cuenta que el validar_datos se va a disparar cuando se intente hacer el submit, por lo que vos estas disparando el ajax y luego de eso inmediatamente enviando el formulario con el submit, ahi tenes dos temas:

1.- Nada te garantiza que el pedido ajax llegue al servidor antes que el submit del formulario

2.- Para cuando vuelva la respuesta al pedido ajax, la pagina no va a ser la misma por lo tanto la llamada a actualizar_datos no se va a llevar a cabo, incluso aunque quedes en la misma pagina, como el js se refresca… puede que no quede registrado a que funcion se debia llamar a la vuelta del pedido.

Pareciera mas coherente meter el valor de dicha confirmacion para que viaje con los datos, algo que podes recuperar luego en el servidor sin problemas. Lo otro que consideraria, es si vale la pena hacerlo en el validar_datos… o si no lo podes hacer directamente en el evt__ del boton que hace el envio… asi el validar, valida.

Saludos

Buen día Richard, muchas gracias por la pronta respuesta, voy a tener en cuenta tu recomendación. Saludos