Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Como se libera memoria en ajax?

Estas en el tema de Como se libera memoria en ajax? en el foro de Frameworks JS en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 16/06/2008, 10:46
Avatar de rk78bl  
Fecha de Ingreso: noviembre-2007
Mensajes: 33
Antigüedad: 16 años, 5 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!!
  #2 (permalink)  
Antiguo 16/06/2008, 11:48
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Como se libera memoria en ajax?

Probá así:
Código PHP:
//....
if (ajax2.readyState==4){
//bla bla bla
ajax2.onreadystatechange=function(){}//null produce un error de tipos en explorer 6
ajax2.abort();
ajax2=null;
}
//... 

Última edición por Panino5001; 18/06/2008 a las 10:20
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:15.