/** xmlHttp.js * SIGES-WEB! * Programado por Alvaro Mora * Propiedad Intelectual Asesoría AKTEK S.A. * Enero 2007 * Todos los Derechos Reservados * Objeto Manejador de Links vía AJAX **/ function xmlHttp () { // AJAX var xmlhttpObj = null; var strHTML_Data = ""; var strNULL = ""; var isDebugEnabled = false; var strXML_NULL = new Object(""); // XML de Datos var oXML = new Xmlt.getDomDocument(); oXML.async = false; oXML.loadXML(strXML_NULL); this.CargarLinkEnDiv = fnc_CargarLinkEnDiv; this.Ejecutar = fnc_Ejecutar; this.getHTML_Data = fnc_getHTML_Data; this.responseText = fnc_responseText; this.responseXML = fnc_responseXML; this.getData = fnc_getData; // this.setData = fnc_setData; this.ShowData = fnc_ShowData; this.LoadXML = fnc_LoadXML; function fnc_responseXML() { return oXML; } function fnc_responseText() { if (xmlhttpObj == null) return ""; return xmlhttpObj.responseText; } function fnc_getHTML_Data() { return strHTML_Data; } function fnc_getData(strKey) { var elementPath = '//root/Data/'+ strKey; var oNode = null; if (oXML.evaluate) { var nodes = oXML.evaluate(elementPath, oXML, null, XPathResult.ANY_TYPE, null); var results = nodes.iterateNext(); oNode = results; } else { oNode = oXML.selectSingleNode(elementPath); } var strValor = (oNode != null)? oNode.text: ''; if (strValor == "" && oNode.textContent) strValor = oNode.textContent; oNode = null; return(strValor); } /** fnc_LoadXML * Método utilizado para cargar una estructura XML a partir de un arreglo de arreglos * Este XML usualmente será enviado al servidor para procesos en masa * El arreglo que recibe, debe ser de la forma { { {CAMPO = VALOR}, {CAMPO = VALOR } }, * { {CAMPO = VALOR}, {CAMPO = VALOR } } * } * Ejemplo: * var keys = new Array(new Array(new Array("CNT01COD","COL"),new Array("FAC23MON","1500")), * new Array(new Array("CNT01COD","DOL"),new Array("FAC23MON","2500"))); * ArmarXML (keys) Produce: * COL1500 * DOL2500 **/ function fnc_LoadXML (keys) { // Limpio el buffer XML oXML.loadXML(strXML_NULL); // Busco el nodo principal var elementPath = '//root/Data'; var oNode = null; if (oXML.evaluate) { var nodes = oXML.evaluate(elementPath, oXML, null, XPathResult.ANY_TYPE, null); var results = nodes.iterateNext(); oNode = results; } else { oNode = oXML.selectSingleNode(elementPath); } // Armo el XML for (i = 0; i < keys.length ; i ++) { var oNewNode = oXML.createElement('Registro'); oNode.appendChild(oNewNode); for (j=0;j 0) blnResult = true; oXML.loadXML( xmlhttpObj.responseXML.xml ) } } else { alert(xmlhttpObj.status + ': URL no encontrado ('+strURL+')'); if (document.getElementById('debug').style.display=='inline') { document.getElementById("source").innerHTML = strURL + "
"+xmlhttpObj.responseText; }; }; document.getElementById('div_mensajes').innerHTML = ""; xmlhttpObj == null; }; return blnResult; } function fnc_CargarLinkEnDiv(strURL, strParams,blnSinc,strDivName, blnScript, blnEnviarXML, strScript, _CallBack) { if (Undefined(strParams)) strParams=""; if (Undefined(blnSinc)) blnSinc = true; if (Undefined(blnEnviarXML)) blnEnviarXML = false; if (Undefined(strScript)) strScript = ""; var xmlhttpObj = zXmlHttp.createRequest(); //Xmlt.getXmlHttpRequest(); //Verifico si estoy procesando algo. Si es así, aborto. if (xmlhttpObj.readyState != 0) { document.getElementById('div_mensajes').innerHTML = ""; document.getElementById('div_msg_tecnicos').innerHTML = ""; xmlhttpObj.abort(); } // Siempre debe ser true, algo no pasa bien... blnSinc = true; document.getElementById('div_mensajes').innerHTML = "  Cargando, espere por favor..."; // Verifico si los parametros ya contienen un & var strAmp = (strParams.substring(0,1) == "&" ? "" : "&"); // Abro la conexion para buscar los datos xmlhttpObj.open("POST", "Security_Check?_URL=" + strURL + strAmp + strParams, blnSinc); // xmlhttpObj.setRequestHeader ("Accept-Charset","ISO-8859-1"); xmlhttpObj.setRequestHeader ("Content-Type", "text/html;ISO-8859-1"); xmlhttpObj.setRequestHeader ("Charset","ISO-8859-1"); // xmlhttpObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttpObj.setRequestHeader('Expires','Sat, 1 Jan 2005 05:00:00 GMT'); xmlhttpObj.setRequestHeader('Last-Modified','Sat, 1 Jan 2005 05:00:00 GMT'); xmlhttpObj.setRequestHeader('Pragma','no-cache'); xmlhttpObj.setRequestHeader('Cache-Control', 'no-cache'); if (blnSinc) { // Verifico si tengo que enviar XML if (blnEnviarXML) { // xmlhttpObj.setRequestHeader("Content-length", oXML.xml.length); xmlhttpObj.send(oXML.xml); } else { // xmlhttpObj.setRequestHeader("Content-length", strNULL.length); xmlhttpObj.send(strNULL); } xmlhttpObj.onreadystatechange=function() { if (xmlhttpObj.readyState == 4) { if (xmlhttpObj.status == 200) { //if (isDebugEnabled) alert('CargarLinkEnDiv - Ya cargué'); // Limpio la memoria: Remuevo todos los objetos del DOM en memoria asociados al objeto var doc = document.getElementById(strDivName); while (doc.childNodes.length > 0) doc.removeChild(doc.childNodes[0]); // Intento limpiar la memoria, solo IE if (window.CollectGarbage) window.CollectGarbage(); // Cargo los datos document.getElementById(strDivName).innerHTML = xmlhttpObj.responseText; document.getElementById('div_mensajes').innerHTML = " "; // Cargo las funciones requeridas por la página cargada // Debe exitir un archivo que se llame igual al URL en la carpeta js_specific // Por el momento, todas estos archivos se cargan en el mismo segmento de memoria __jsRuntime__ if (strScript == "") strScript = strURL+".js"; if (isDebugEnabled) alert('CargarLinkEnDiv - Voy a cargar Script ' + strScript); CrearScript(strScript,"__jsRuntime__"); } else { if (xmlhttpObj.status == 500) { if (document.getElementById('debug').style.display=='inline') { document.getElementById('source').innerHTML = strURL +"?"+strParams+ "
" + xmlhttpObj.responseText; alert('Error de Compilación'); } else { document.getElementById('div_mensajes').innerHTML = "Ha ocurrido un error al accesar esta opción. " +"
" + xmlhttpObj.responseText; } } else { alert(xmlhttpObj.status + ': URL no encontrado ('+strURL+')'); } }; xmlhttpObj == null; if (!Undefined(_CallBack)) _CallBack(); }; document.getElementById('div_mensajes').innerHTML = ""; }; } else { document.getElementById('div_mensajes').innerHTML = "  Cargando, espere por favor..."; // Verifico si tengo que enviar XML if (blnEnviarXML) { xmlhttpObj.setRequestHeader("Content-length", oXML.xml.length); xmlhttpObj.send(oXML.xml); } else { xmlhttpObj.setRequestHeader("Content-length", strNULL.length); xmlhttpObj.send(strNULL); } if (xmlhttpObj.readyState == 4) { if (xmlhttpObj.status == 200){ document.getElementById(strDivName).innerHTML = xmlhttpObj.responseText; document.getElementById('div_mensajes').innerHTML = " "; // Cargo las funciones requeridas por la página cargada // Debe exitir un archivo que se llame igual al URL en la carpeta js_specific // Por el momento, todas estos archivos se cargan en el mismo segmento de memoria __jsRuntime__ if (strScript == "") strScript = strURL+".js"; if (isDebugEnabled) alert('CargarLinkEnDiv - Voy a cargar Script ' + strScript); CrearScript(strScript,"__jsRuntime__"); } else { alert(xmlhttpObj.status + ': URL no encontrado ('+strURL+')'); }; xmlhttpObj == null; if (!Undefined(_CallBack)) _CallBack(); }; document.getElementById('div_mensajes').innerHTML = ""; }; // Limpio el buffer XML oXML.loadXML(strXML_NULL); if (isDebugEnabled) alert('CargarLinkEnDiv - Fin'); }; }