naja ursprünglich hatte ich gedacht, dass ich aus der funktion heraus das objekt, auf dass sich die funktion ja bezieht nicht löschen könnte, da sich ja damit die funktion selbst auflösen würde obwohl sie gerade läuft.
Nein, du setzt ja nur die Referenz auf das Requestobjekt in der Funktion request_fkt null. Den Eventhandler löschst du damit nicht solange er noch läuft, dafür sorgt schon der IE, selbst wenn du die onreadystatechange-Property nullst. Der hat seine eigene Referenz auf die gerade ausgeführte Funktion.
genau deswegen dachte ich mir, packst es in ein globales array
tests mittels alert haben ergeben, dass das array auch meist eine länge von 0 hat.
Du entfernst es es ja auch immer nach Abschluss! Also immer den gerade laufenden Request.
öhm ja .. nach abschluss will ich es ja auch entfernen, nicht mittendrin ;)
dennoch geht der speicherverbrauch in die höhe. einpegeln tut er sich dann, wenn der ram komplett aufgebraucht ist, dann geht der rechner in die knie ^^
eben war er bei 1,5 GB RAM .. das ist natürlich unzumutbar.
Was machst du denn mit den Daten? Wenn du die jedesmal irgendwo einbaust, und alte nicht wieder austrägst verbrauchst du immer mehr Speicher.
letztendlich ist es eine riesen tabelle. hier werden zellen geleert (.innerHTML="") und dann mit neuen daten befüllt, sprich die tabelle wird "aktuell" gehalten
es geht halt schneller nur die ändeurngen nachzuladen, als jedesmal die gesamte tabelle laden zu lassen
hast du denn eine idee?
aktuelle version der funktion:
var running_ajax_requests = new Array();
function request_fkt(ziel,post,parameter)
{
if(!post) ziel="../../ajax.php?" + ziel;
else ziel="../../ajax.php";
xmlHttp = null;
try {
// Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
xmlHttp = new XMLHttpRequest();
} catch(e) {
try {
// MS Internet Explorer (ab v6)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
try {
// MS Internet Explorer (ab v5)
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xmlHttp = null;
}
}
}
if (xmlHttp)
{
running_ajax_requests.push(xmlHttp);
xmlHttp=null;
akt_ajax_req_index=running_ajax_requests.length-1;
if(!post) running_ajax_requests[akt_ajax_req_index].open('GET', ziel, true);
else running_ajax_requests[akt_ajax_req_index].open('POST', ziel, true);
running_ajax_requests[akt_ajax_req_index].onreadystatechange = function ()
{
if (this.readyState == 4) {
if(this.responseText!="1")
{
response=this.responseText;
try
{
// alert(response);
eval(response);
}
catch(e)
{
// fehlerbehandlung
}
}
}
for(i=(running_ajax_requests.length-1);i>=0;i--)
{
if(running_ajax_requests[i]==null || running_ajax_requests[i].readyState==4)
{
delete running_ajax_requests[i];
}
}
};
if(!post) running_ajax_requests[akt_ajax_req_index].send(null);
else
{
running_ajax_requests[akt_ajax_req_index].setRequestHeader("Content-type", "application/x-www-form-urlencoded");
running_ajax_requests[akt_ajax_req_index].setRequestHeader("Content-length", parameter.length);
running_ajax_requests[akt_ajax_req_index].setRequestHeader("Connection", "close");
running_ajax_requests[akt_ajax_req_index].send(parameter);
}
}
else return "konnte XMLHttpRequest nicht initialisieren";
}
ich danke auch dir für deine mithilfe!