Foros del Web » Programando para Internet » Javascript »

problema para recuperar valor asignado con ajax

Estas en el tema de problema para recuperar valor asignado con ajax en el foro de Javascript en Foros del Web. saludos amigos les explico, tengo una funcion en javascript que me carga un formulario con datos tomados de una BD usando ajax funcion fino trayendose ...
  #1 (permalink)  
Antiguo 07/08/2013, 18:19
 
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
problema para recuperar valor asignado con ajax

saludos amigos les explico, tengo una funcion en javascript que me carga un formulario con datos tomados de una BD usando ajax funcion fino trayendose todos los valores y los muestra pero hay un valor que debo calcular con algunos de los valores que se esta trayendo ejemplo calculo el monto total a pagar y calculo los abonos hecho si resto montototal-abonos=deuda_actual bueno la resta no la hace por que cuando hago la solicitud de la operacion aritmetica es como q si aun el campo text no tiene la informacion sin embargo al finalizar el proceso veo que los campos efectivamente tienen la informacion, e hecho unos alert y aveces funciona pero tengo q meterle los alert ejemplo digo alert(document.getelementid('monto_total').value) y me muestra 0 pero al ver la pagina tiene 2800. aqui dejo la funcion yo creo q lo q ocurre es q estoy tratando de usar los datos de ese text y aun no lo tiene asignado.
pense en usar una funcion como sleep pero buscando dicen q use settimeout pero lei q ella no detiene la ejucion (es asincrona) imagino que no me servira para tratar de que se le de chance para poder leer el valor que al final se deberia ver
aqui la funcion

Código:
function carga_datos_contrato(form,form1)
{
	
	// hay que habiitar el div oculto y cargar separando por coma lo que devuelve la funcion
	if(form.contratos.value!="0"){
		calcula_monto_abonado(form.contratos.value);
		
	var ajax=nuevoAjax();
		ajax.open("GET", "funcion_ajax.php?ncontrato="+form.contratos.value+"&sw=5", true);
		ajax.onreadystatechange=function() 
		{ 
			
			if (ajax.readyState==4)
			{
				
					var respuesta=ajax.responseText;
					document.getElementById('cubre_form_pago').style.visibility='visible';
					var elem = respuesta.split(',');
					form.num_contrato.value=form.numero_contrato.value=elem[2];
					form.tipo_contrato.value=elem[0];
					tonumberphp(elem[1],form.monto);
					form.fecha.value=tofechaphp(elem[3]);
					form.contribuyente.value=elem[4];
					tonumberphp(elem[5],form.gastos_adm);
					//debo .calcular el monto a pagar
					var monto_total=parseFloat(calcula_impuesto_apagar(elem[1],form.base_calculo.value,form.tarifa_ut.value))+parseFloat(elem[5]);
					tonumberphp(monto_total,form.total_a_pagar);

	var monto_total=tonumbermysql(document.getElementById('total_a_pagar').value);
	var monto_deuda=monto_total-monto_abonado;
	tonumberphp(monto_deuda,document.getElementById('deuda'));// aqui cargo el monto de la deuda al campo text deuda
				
				//	alert(document.getElementById('abonado').value);

			} 
		}
		ajax.send(null);
		
	//var monto_abonado2=document.getElementById('abonado').value;
	///var monto_total2=document.getElementById('total_a_pagar').value;
	//alert(document.getElementById('abonado').value+" monto total"+document.getElementById('total_a_pagar').value);
	
	
	
	}else{
	document.getElementById('cubre_form_pago').style.visibility='hidden';
	
	}
	}
  #2 (permalink)  
Antiguo 07/08/2013, 18:32
 
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
Respuesta: problema para recuperar valor asignado con ajax

edite para q vieran como si funciona

saludos amigos les explico, tengo una funcion en javascript que me carga un formulario con datos tomados de una BD usando ajax funcion fino trayendose todos los valores y los muestra pero hay un valor que debo calcular con algunos de los valores que se esta trayendo ejemplo calculo el monto total a pagar y calculo los abonos hecho si resto montototal-abonos=deuda_actual bueno la resta no la hace por que cuando hago la solicitud de la operacion aritmetica es como q si aun el campo text no tiene la informacion sin embargo al finalizar el proceso veo que los campos efectivamente tienen la informacion, e hecho unos alert y aveces funciona pero tengo q meterle los alert ejemplo digo alert(document.getelementid('monto_total').value) y me muestra 0 pero al ver la pagina tiene 2800. aqui dejo la funcion yo creo q lo q ocurre es q estoy tratando de usar los datos de ese text y aun no lo tiene asignado.
pense en usar una funcion como sleep pero buscando dicen q use settimeout pero lei q ella no detiene la ejucion (es asincrona) imagino que no me servira para tratar de que se le de chance para poder leer el valor que al final se deberia ver
aqui la funcion
colocando la funcion asi con los alert funciona pero al quitarlos no funciona.
Código:
function carga_datos_contrato(form,form1)
{
	
	// hay que habiitar el div oculto y cargar separando por coma lo que devuelve la funcion
	if(form.contratos.value!="0"){
		calcula_monto_abonado(form.contratos.value);
		
	var ajax=nuevoAjax();
		ajax.open("GET", "funcion_ajax.php?ncontrato="+form.contratos.value+"&sw=5", true);
		ajax.onreadystatechange=function() 
		{ 
			
			if (ajax.readyState==4)
			{
				
					var respuesta=ajax.responseText;
					document.getElementById('cubre_form_pago').style.visibility='visible';
					var elem = respuesta.split(',');
					form.num_contrato.value=form.numero_contrato.value=elem[2];
					form.tipo_contrato.value=elem[0];
					tonumberphp(elem[1],form.monto);
					form.fecha.value=tofechaphp(elem[3]);
					form.contribuyente.value=elem[4];
					tonumberphp(elem[5],form.gastos_adm);
					//debo .calcular el monto a pagar
					var monto_total=parseFloat(calcula_impuesto_apagar(elem[1],form.base_calculo.value,form.tarifa_ut.value))+parseFloat(elem[5]);
					tonumberphp(monto_total,form.total_a_pagar);
				alert("a");
				alert(tonumbermysql(document.getElementById('total_a_pagar').value));
	var monto_total=tonumbermysql(document.getElementById('total_a_pagar').value);
	var monto_abonado=tonumbermysql(document.getElementById('abonado').value);
	alert(monto_total-monto_abonado);
	var monto_deuda=monto_total-monto_abonado;
	tonumberphp(monto_deuda,document.getElementById('deuda'));// aqui cargo el monto de la deuda al campo text deuda
				
				//	alert(document.getElementById('abonado').value);

			} 
		}
		ajax.send(null);
		
	//var monto_abonado2=document.getElementById('abonado').value;
	///var monto_total2=document.getElementById('total_a_pagar').value;
	//alert(document.getElementById('abonado').value+" monto total"+document.getElementById('total_a_pagar').value);
	
	
	
	}else{
	document.getElementById('cubre_form_pago').style.visibility='hidden';
	
	}
	}
de esta forma deberia estar la funcion pero asi no lee lo que esta en los campos que requiero para hacer la resta
Código:
function carga_datos_contrato(form,form1)
{
	
	// hay que habiitar el div oculto y cargar separando por coma lo que devuelve la funcion
	if(form.contratos.value!="0"){
		calcula_monto_abonado(form.contratos.value);
		
	var ajax=nuevoAjax();
		ajax.open("GET", "funcion_ajax.php?ncontrato="+form.contratos.value+"&sw=5", true);
		ajax.onreadystatechange=function() 
		{ 
			
			if (ajax.readyState==4)
			{
				
					var respuesta=ajax.responseText;
					document.getElementById('cubre_form_pago').style.visibility='visible';
					var elem = respuesta.split(',');
					form.num_contrato.value=form.numero_contrato.value=elem[2];
					form.tipo_contrato.value=elem[0];
					tonumberphp(elem[1],form.monto);
					form.fecha.value=tofechaphp(elem[3]);
					form.contribuyente.value=elem[4];
					tonumberphp(elem[5],form.gastos_adm);
					//debo .calcular el monto a pagar
					var monto_total=parseFloat(calcula_impuesto_apagar(elem[1],form.base_calculo.value,form.tarifa_ut.value))+parseFloat(elem[5]);
					tonumberphp(monto_total,form.total_a_pagar);
				
	var monto_total=tonumbermysql(document.getElementById('total_a_pagar').value);
	var monto_abonado=tonumbermysql(document.getElementById('abonado').value);

	var monto_deuda=monto_total-monto_abonado;
	tonumberphp(monto_deuda,document.getElementById('deuda'));// aqui cargo el monto de la deuda al campo text deuda
				
				//	alert(document.getElementById('abonado').value);

			} 
		}
		ajax.send(null);
		
	//var monto_abonado2=document.getElementById('abonado').value;
	///var monto_total2=document.getElementById('total_a_pagar').value;
	//alert(document.getElementById('abonado').value+" monto total"+document.getElementById('total_a_pagar').value);
	
	
	
	}else{
	document.getElementById('cubre_form_pago').style.visibility='hidden';
	
	}
	}
la funcion que me calcula el monto abonado es esta
Código:
function calcula_monto_abonado(numero_contrato)
{ 
	var ajax7=nuevoAjax();
	
		ajax7.open("GET", "funcion_ajax.php?ncontrato="+numero_contrato+"&sw=6", true);
		ajax7.onreadystatechange=function() 
		{ 
			
			if (ajax7.readyState==4)
			{
				
			
			tonumberphp(ajax7.responseText,document.getElementById('abonado'));		
			} 
		}
		ajax7.send(null);
	
	}

Última edición por BLADDE; 07/08/2013 a las 18:40 Razón: agregar la funcion que calcula lo abonado

Etiquetas: ajax, formulario, funcion, php, valor
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:20.