Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema al implementar función

Estas en el tema de Problema al implementar función en el foro de Javascript en Foros del Web. saludos amigos ya me rendi y decidi pedir ayuda!!!! fijense tengo 2 funciones que usan ajax para arrojar un resultado pero creo q al usar ...
  #1 (permalink)  
Antiguo 03/01/2014, 22:07
 
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
Problema al implementar función

saludos amigos ya me rendi y decidi pedir ayuda!!!!
fijense tengo 2 funciones que usan ajax para arrojar un resultado pero creo q al usar ajax algo ocurrre con la ejecucion y el orden en el que se desenvuelven. ejemplo la funcion 1 retorna "1" o "0" y dependiendo de ella se ejecuta la segunda sin embargo la segunda pase lo q pase con la primera siempre se ejecuta. anexo el codigo:
llamada de las funciones:
Código:
function nuevoAjax()
{ 
	var xmlhttp=false;
	try
	{
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			// Creacion del objet AJAX para IE
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(E)
		{
			if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
		}
	}
	return xmlhttp; 
}



/////////////////////////////////
///////////////////////////////////////////////
function verificar_si_existe()
{

		var op=0;// esta variable la cree para ubicar el resultado despues del ajax2.send(null);
		var ajax2=nuevoAjax();
		ajax2.open("GET", "ajax_despacho.php?opc=2&cedula="+document.getElementById('cedula').value, true);// 
		ajax2.onreadystatechange=function() 
		{ 
			
			if (ajax2.readyState==4)
			{  	if(ajax2.responseText=="1")
					{
						alert("el beneficioario que intenta registrar ya existe en nuestro sistema.");
						op=1;
						
						}
					
							
		
			} 
		}
		ajax2.send(null);
		
		return op;

	}



/////////////////////////////////////////////
function registrar_beneficiario()
{

if(verificar_si_existe()==0){//** aqui es donde se hace la llamada de la segunda funcion. actualmente cuando el beneficiario esta registrado el sistema me muestra los 2 avisos el que dice que hubo un error y no se pudo guardar y el que dice ya el beneficiario esta registrado en nuestro sistema
	
	
	
		var ajax=nuevoAjax();
		ajax.open("GET", "ajax_despacho.php?opc=1&nombre="+document.getElementById('nombre').value+"&apellido="+document.getElementById('apellido').value+"&cedula="+document.getElementById('cedula').value+"&telefono="+document.getElementById('telefono').value+"&correo="+document.getElementById('correo').value+"&fecha_n="+document.getElementById('fecha_n').value+"&sexo="+document.getElementById('sexo').options[document.getElementById('sexo').selectedIndex].value+"&estado="+document.getElementById('estados').options[document.getElementById('estados').selectedIndex].value+"&municipio="+document.getElementById('municipios').options[document.getElementById('municipios').selectedIndex].value+"&telefono2="+document.getElementById('telefono2').value+"&direccion="+document.getElementById('direccion').value, true);// 
		ajax.onreadystatechange=function() 
		{ 
			
			if (ajax.readyState==4)
			{   
					if(ajax.responseText==1)
					{
						alert("el beneficioario se registro sin problema");
						}else{alert("ocurrio un error no se pudo guardar el beneficiario");}
					
							
		
			} 
		}
		ajax.send(null);
	}else{}

	}
agradecido al que me pueda orientar o explicar la logica que se esta implementando mal, pues asumo es una cuestion de ajax antes los objetos ajax se llamaban igual probando les cambie el nombre pero igual
  #2 (permalink)  
Antiguo 03/01/2014, 22:22
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema al implementar función

Podrías intentarlo así:

Código Javascript:
Ver original
  1. function verificar_si_existe(){
  2.     var ajax2 = nuevoAjax();
  3.  
  4.     ajax2.open("GET", "ajax_despacho.php?opc=2&cedula=" + document.getElementById('cedula').value, true);
  5.     ajax2.onreadystatechange=function(){
  6.         if (ajax2.readyState==4){
  7.             if(ajax2.responseText == "1"){
  8.                 alert("El beneficiario que intenta registrar ya existe en nuestro sistema.");
  9.             }
  10.             else{
  11.                 var ajax = nuevoAjax();
  12.                 ajax.open("GET", "ajax_despacho.php?opc=1&nombre="+document.getElementById('nombre').value+"&apellido="+document.getElementById('apellido').value+"&cedula="+document.getElementById('cedula').value+"&telefono="+document.getElementById('telefono').value+"&correo="+document.getElementById('correo').value+"&fecha_n="+document.getElementById('fecha_n').value+"&sexo="+document.getElementById('sexo').options[document.getElementById('sexo').selectedIndex].value+"&estado="+document.getElementById('estados').options[document.getElementById('estados').selectedIndex].value+"&municipio="+document.getElementById('municipios').options[document.getElementById('municipios').selectedIndex].value+"&telefono2="+document.getElementById('telefono2').value+"&direccion="+document.getElementById('direccion').value, true);
  13.                 ajax.onreadystatechange=function(){
  14.                 if (ajax.readyState==4){  
  15.                     if(ajax.responseText==1){
  16.                         alert("El beneficiario se registro sin problema");
  17.                     }
  18.                     else{
  19.                         alert("Ocurrió un error no se pudo guardar el beneficiario");
  20.                     }
  21.                 }
  22.                 ajax.send(null);
  23.             }
  24.         }
  25.         ajax2.send(null);
  26.     }
  27. }

No retornabas el valor de la variable op porque ésta se encuentra solamente en el alcance de la primera función Ajax cuando se produce el evento onreadystatechange. Te sugiero ser más ordenado con tu código, podrías mejorar este script.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 05/01/2014, 10:54
 
Fecha de Ingreso: abril-2006
Mensajes: 72
Antigüedad: 18 años
Puntos: 0
Respuesta: Problema al implementar función

manito pues lo del orden tienes razon siempre paso trabajooooo pero ahi hago el intento, excelente la idea y el analisis, lo evidente es evidente cuando te lo dicen de resto no jajajjajajaja, fijate con el codigo q me pusiste no pude resolver daba un error en el java script en la parte de
Código:
 ajax2.onreadystatechange=function(){
de ahi no pasaba sin embargo entendi la idea y unifique toodo en una sola funcion y quedo asi:
Código:
function registrar_beneficiario()
{


	var ajax2=nuevoAjax();
		ajax2.open("GET", "ajax_despacho.php?opc=2&cedula="+document.getElementById('cedula').value, true);// 
		ajax2.onreadystatechange=function() 
		{ 
			
			if (ajax2.readyState==4)
			{  	if(ajax2.responseText=="1")
					{
						alert("el beneficioario que intenta registrar ya existe en nuestro sistema.");
						
						
						}else{//lo inserto
							var ajax=nuevoAjax();
		ajax.open("GET", "ajax_despacho.php?opc=1&nombre="+document.getElementById('nombre').value+"&apellido="+document.getElementById('apellido').value+"&cedula="+document.getElementById('cedula').value+"&telefono="+document.getElementById('telefono').value+"&correo="+document.getElementById('correo').value+"&fecha_n="+document.getElementById('fecha_n').value+"&sexo="+document.getElementById('sexo').options[document.getElementById('sexo').selectedIndex].value+"&estado="+document.getElementById('estados').options[document.getElementById('estados').selectedIndex].value+"&municipio="+document.getElementById('municipios').options[document.getElementById('municipios').selectedIndex].value+"&telefono2="+document.getElementById('telefono2').value+"&direccion="+document.getElementById('direccion').value, true);// 
		ajax.onreadystatechange=function() 
		{ 
			
			if (ajax.readyState==4)
			{   
					if(ajax.responseText==1)
					{
						alert("el beneficioario se registro sin problema");
						}else{alert("ocurrio un error no se pudo guardar el beneficiario");}
					
							
		
			} 
		}
		ajax.send(null);
	
							
							
							
							}
					
							
		
			} 
		}
		ajax2.send(null);
	
	
		

	}
agradecido por tu tiempo y ayuda!

Etiquetas: ajax, funcion, implementar, php, variable
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 16:29.