Nel titolo è praticamente impossibile spiegare.

Dunque ho un'applicazione completamente basata su ajax, uso le tw_sack come librerie.

Da una pagina apro una popup da dove scegliere una lista di cose tramite checkbox. Al "onChange" della checkbox parte una chiamata al file php che si occupa dell'inserimento nel db della scelta, ovviamente tramite ajax, per risposta faccio in modo di ricaricare una porzione della pagina opener.

La chiamata e l'inserimento vengono effettuati ma solo quando viene chiusa la popup!!! Sembra quasi che restino in memoria le chiamate e quindi finalizzate alla chiusura (non c'è nessunissimo evento onclose in tutta l'applicazione!).


// JavaScript

// il div msg contiene il risultato dell'operazione

var ajax = new sack();

// Serve per deserializzare un oggetto serializzato e inviato dal php
var PHPSer = new PHP_Serializer();


function whenLoading(){
var e = document.getElementById('msg');
e.style.visibility = 'visible';
e.innerHTML = "invio rischiesta...";
}

function whenLoaded(){
var e = document.getElementById('msg');
e.style.visibility = 'visible';
e.innerHTML = "salvataggio in corso...";
}

function whenInteractive(){
var e = document.getElementById('msg');
e.style.visibility = 'visible';
e.innerHTML = "ricezione dati...";
}

function whenCompleted(){

var e = document.getElementById('msg');

// Controllo che i dati siano stati processati e che
// abbia ricevuto un messaggio di risposta
if (ajax.responseStatus && ajax.responseStatus[0] == 200){

// Deserializzo il response
// Eseguo il response che contiene una chiamata ad una funzione dell'opener
// tipo window.opener.show();

var response = PHPSer.unserialize(ajax.response);

eval(response);

var string = "salvato";



}
// C'e stato qualche errore con la transazione
else {
var string = "si e verificato un errore inatteso"
}

e.innerHTML = string;

}

// Chiamato all'onChange della checkbox
function NewsHandl(padre, elm){

alert(document.title);

ajax.resetData();

ajax.setVar('padre', padre);
ajax.setVar('id', elm.value);

if(elm.checked == true)
ajax.setVar('act', 'add');
else
ajax.setVar('act', 'del');


ajax.requestFile = "_ajaxphp/news_tree.php";
ajax.method = "POST";

ajax.onLoading = whenLoading;
ajax.onLoaded = whenLoaded;
ajax.onInteractive = whenInteractive;
ajax.onCompletion = whenCompleted;

ajax.runAJAX();

}
cambiando solo la funzione NewsHandl ottenete praticamente la struttura per ogni pagina dell'intero sistema, quindi anche l'opener per capirci funziona con la stessa tecnica. Anche i nomi delle variabili sono uguali ed ho quindi provato a cambiare tutti i nomi delle funzioni e delle variabili ma continua a non funzionare!

C'è di più, il div msg che all'evento onLoading, onLoaded ecc contiene le varie informazioni dei passaggi NON VIENE MAI MOSTRATO.

Per finire posso dirvi che con firefox funziona tutto alla grande, è solo il fott**o explorer che non va.

Qualche idea?

Se non sono stato chiaro chiedete pure!

Ciao e grazie