Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2008, 10:46
Avatar de rk78bl
rk78bl
 
Fecha de Ingreso: noviembre-2007
Mensajes: 33
Antigüedad: 16 años, 6 meses
Puntos: 0
Pregunta Como se libera memoria en ajax?

Que tal foro, tengo este mega lio, hice un mini chat usando php y ajax, todo bien, peroooo como que no estoy liberando la memoria del objeto xmlhttp, porque dejo la ventana de chat abierta unos 30 min, y ya sea ie o ff se comen muchisima memoria de la pc y el consumo de procesador se dispara a 100% algo estoy haciendo mal pero no se que miren lo que hago es esto:


con esta funcion pido el objeto
function nuevoAjax()
{
/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por lo que se puede copiar tal como esta aqui */
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) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }

return xmlhttp;
}


y esa funcion la mando llamar en distintas partes de mi archivo js en distintas funciones

por ejemplo:

function InsertaMsg(txtMsg,lsFecha)
{
// Creo el objeto AJAX
var ajax2=nuevoAjax();
var parametros="";
var FORMA;

if(document.forms.length==1)
FORMA=document.forms[0];
else
FORMA=document.forms[1];
parametros="msg="+txtMsg+"&fecha="+lsFecha+"&cve_p latica="+FORMA.cve_platica.value+"&tipo_cte=C&cve_ cte="+FORMA.cve_cte.value+"&cve_usuario="+FORMA.cv e_usuario.value;
// Abro la conexión, envío cabeceras correspondientes al uso de POST y envío los datos con el método send del objeto AJAX
ajax2.open("POST", "insertaMsg.php", true);
ajax2.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax2.onreadystatechange=function()
{
if (ajax2.readyState==4)
{
//Habilito botón de nuevo
FORMA.btnEnviar.disabled=false;
if(FORMA.cve_platica.value=="no")
{
//alert(ajax2.responseText);
FORMA.cve_platica.value=ajax2.responseText;
VerificaMsg();
}
}
}
ajax2.send(parametros);
FORMA.txtMsg.focus();
FORMA.txtMsg.value="";
}


no se si con asignar null al final de mi funcion por ejemplo

ajax2=null;

o alguna manera de decirle que cuando ya usó el objeto y le haya regresado valores libere su uso, cabe señalar que en todas las funciones creo la variable ajax2 es decir es una variable local siempre, pero como les comento aun con eso, me consume infinidad de recursos de la pc y pues llega un momento en que ni cerrar la ventana puedo

me podran ayudar por favor? que estoy haciendo mal?

Saludos!!