Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/06/2014, 18:57
mono_chimuchino
 
Fecha de Ingreso: noviembre-2011
Mensajes: 44
Antigüedad: 12 años, 5 meses
Puntos: 0
Exclamación Llamadas de Función en Ajax

Buenos días amigos, espero me puedan ayudar, el tema es un poquito largo, paciencia....

En un tabla que muestra la siguiente estructura de información. es un (ejemeplo)


cod / nombre / cantidad / ver

1 bla bla 3 boton mostrar
2 ble ble 2 boton mostrar

al hacer click en boton mostrar hace una llamada de funcion en ajax y me muestra el código de operación y me refresca otra grilla(que es una tabla dinamica table,tr,td)

a continuación pongo la función al hacer click en el "botón mostrar"

Código:
function load_operation_id(id_a){
	alert("El Codigo de Operacion seleccionado es el: "+id_a);
	loadValueforOperation("transactional__recovery_data/frm_recover_information_from_operation.php?id_a="+id_a,"datos_a"); 
	

}
esta función llama a esta otra

Código:
function loadValueforOperation(url, contenedor){
var pag = false;
   if(window.XMLHttpRequest){
      pag = new XMLHttpRequest();
   }else{
      if(window.ActiveXObject){ // pero si es IE
         try{
            pag = new ActiveXObject("Msxml2.XMLHTTP");
         }catch(e){ // en caso que sea una versión antigua
            try{
               pag = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(e){}
         }
      }else{
         return false;
      }
   }
   pag.onreadystatechange=function(){ // función de respuesta
      loadURLforOperation(pag, contenedor);

	  setTimeout("Show_Data_For_Operation();",1);
	  setTimeout("load_users_information_from_operation_iden();",1);
	  //setTimeout("load_machine_replacements_information_from_operation_iden()",8);//Arreglar Sincronia
   }
   pag.open('GET', url, true) // asignamos los métodos open y send
   pag.send(null)
}

esta llama a 2 funciones, aqui van:


Código:
function Show_Data_For_Operation(){
      var datos=document.getElementById("datos_a").value;
      if(datos!=""){
      datos=datos.split(",");
      document.getElementById("id_a").value=datos[0];
	  document.getElementById("detailed_reparation_id").value=datos[1];
	  document.getElementById("detailed_reparation_desc").value=datos[2];
	  document.getElementById("detailed_reparation_numpers").value=datos[3];
	  document.getElementById("detailed_reparation_id_b").value=datos[1];
	  document.getElementById("detailed_reparation_desc_b").value=datos[2];
	  document.getElementById("detailed_reparation_numpers_b").value=datos[3];
	  
     }
	  else{
          //setTimeout("mostrar_DelSoftware()",1);
      }
  }  


function load_users_information_from_operation_iden(){
	//alert();
	dat1=document.getElementById("detailed_reparation_id").value;
	accion_a="transactional__insert_data/system_frm_load_datagrid_from_users_operation_activity.php?detailed_reparation_id=" + dat1; 
	//loadPag(accion_a,"datagrid__detailed_users_for_operation");		
	loadPag_b(accion_a,"datagrid__detailed_users_for_operation");								   
}
la primera no tiene ningun problema y recupera la informacion SIEMPRE. pero la q refresca la grilla, la segunda funcion en promedio al decimo intento falla y no carga la grilla, solo recupera el valor ,pero no referesca

el problema debe estar en la segunda funcion que llama a esta otra loadpag_b()

Código:
function loadPag_b(urlbc, contenedorbc){
var pagbc = false;
   if(window.XMLHttpRequest){
      pagbc = new XMLHttpRequest();
   }else{
      if(window.ActiveXObject){ // pero si es IE
         try{
            pagbc = new ActiveXObject("Msxml2.XMLHTTP");
         }catch(e){ // en caso que sea una versión antigua
            try{
               pagbc = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(e){}
         }
      }else{
         return false;
      }
   }
   pagbc.onreadystatechange=function(){ // función de respuesta
      loadURL_bc(pagbc, contenedorbc);
	  //setTimeout("load_machine_replacements_information_from_operation_iden()",3);
   }
   pagbc.open('GET', urlbc, true) // asignamos los métodos open y send
   pagbc.send(null)
}
//OTRO
function loadURL_bc(pagina_requeridabc, id_contenedorbc){
   if(pagina_requeridabc.readyState == 4 && (pagina_requeridabc.status==200 || window.location.href.indexOf("http")==-1)){
      document.getElementById(id_contenedorbc).innerHTML=pagina_requeridabc.responseText;
   }
}


, he probado con settimeout y sin el, pero me da la impresion de q al llamar nuevamente al objeto de ajax se lagea u algo parecido, ojala me puedan ayudar.... es muy importante y no me gusta que la aplicacion presente problema, insisto nunca falla a la primera ni la segunda, es como al decimo intento q empiezo a probar (recuperar los ID) es q falla y me recupera solo el id y no refresca la grilla

espero me hayan entendido, desde ya muchas gracias, saludos amigos