Salve a tutti vi incollo il codice e poi vi spiego il problema.

Pagina form.php
codice:
    <div id='boxForm'>
        <form  method='post' id='fmIndex' onsubmit='return handleServerResponse()' >

            Nome <input type='text' name='txtNome' id='txtNome' /><br />
            Cognome <input type='text' name='txtCognome' id='txtCognome' /><br />
            Email <input type='text' name='txtEmail' id='txtEmail' /><br />
            <input type='submit' value='Invia' />
        </form>
    <div>
Pagina form.js
codice:

var xmlhttp = createXmlHttpRequestObject();

var I_UNINITIALIZED = 0;
var I_LOADING = 1;
var I_LOADED = 2;
var I_INTERACTIVE = 3;
var I_COMPLETE = 4;


// ### RESTITUISCE L'OGGETTO XMLHttpRequest
function     createXmlHttpRequestObject(){
    
            var xmlHttp;
            
            // ### SE SI USA INTERNET EXPLORER
            if    (window.ActiveXObject){
                
                try{
                    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }catch     (e){
                        xmlHttp = false;
                }
            // ### SE SI USANO ALTRI BROWSER
            }else{
                try{
                    xmlHttp = new XMLHttpRequest();
                }catch     (e){
                        xmlHttp = false;
                }            
            }

            if    (!xmlHttp){
                alert("Errore durante la creazione dell'oggetto XMLHttpRequest");  
            }else{
                return xmlHttp;
            }
}



function     handleServerResponse(){
      
            var strNome = document.getElementById("txtNome").value;
            var strCognome = document.getElementById("txtCognome").value;
            var strEmail = document.getElementById("txtEmail").value;
            var strData = "";
            
            var strData = "txtNome=" + strNome + "&txtCognome=" + strCognome + "&txtEmail=" + strEmail;
            
            xmlhttp.open("POST", "data.php", true);


            xmlhttp.onreadystatechange = function()  {
                    if (xmlhttp.readyState==4){
                        if    (xmlhttp.status==200)   {
                        alert(xmlhttp.readyState + "\n" + xmlhttp.status + "\n" + xmlhttp.responseText);
                        var boxId=document.getElementById("boxForm");
                        boxId.innerHTML=xmlhttp.responseText;
                        }
                    }
                }
                
            //Send the proper header information along with the request
            xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xmlhttp.setRequestHeader("Content-length", strData.length);
            xmlhttp.setRequestHeader("Connection", "close");
            
            xmlhttp.send(strData);
}
Pagina data.php
codice:
<?php
echo "ecco i dati";
print_r($_POST);
?>
Questo codice non funziona. All'invio del form la pagina resta uguale a prima con i campi svuotati.
Se invece metto un alert() nella funzione interna (quella assegnata a xmlhttp.onreadystatechange) compare una finestra alert() e poi al posto del form viene stampato il risultato della pagina php. Quale è il problema? Grazie a chi mi risponderà