Ti posto direttamente il codice della pagina che secondo me facciamo prima..
Codice PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Documento senza titolo</title>
<
script type="text/javascript">
    function 
_getElementById(idElemento){
        var 
elemento;
            if(
document.getElementById){
                
elemento document.getElementById(idElemento);
            }else{
                
elemento document.all[idElemento];
            }
        return 
elemento;
    }

    function 
xmlhttpInstance(){
        var 
xmlhttp null;
            if(
window.XMLHttpRequest){// Mozilla, Safari, ...
                
xmlhttp = new XMLHttpRequest();
                    if(
xmlhttp.overrideMimeType){
                        
xmlhttp.overrideMimeType('text/xml');
                    }
            }else if(
window.ActiveXObject){// IE
                    
try{
                        
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
                    }catch (
e){
                        try{
                            
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                        }catch (
e){
                            
alert("Errore: Impossibile creare l'istanza XMLHTTP!");
                        }
                    }
            }
        return 
xmlhttp;
    }
    
    function 
ajaxDo(url,funzioneDone,div,asynchronous,method){
        
        var             
            
appendRandom      true,
            
appendRandomValue "ajaxRnd",
            
massimaAttesa     2;
        
        var 
            
useDegradableHref  true,
            
xmlhttp            xmlhttpInstance();
        
            if(!
xmlhttp){
                return 
useDegradableHref;
            }
            
        var
            
useDegradableHref false,
            
parameters        null,
            
getMethod         "get",
            
postMethod         "post",    
            
urlParam          url.split("?"),
            
url               urlParam[0],
            
dataChiamata      = new Date(),
            
inizioChiamata    dataChiamata.getTime(),
            
verificaTempoTrascorso;

        
            if(
asynchronous == undefinedasynchronous true;
            if(
method == undefined)       method       getMethod;
            
            if(
method == getMethod){
                if(
urlParam[1] != undefined){
                    
url url+"?"+urlParam[1];
                }
                
                if(
appendRandom){
                    if(
urlParam[1] != undefined){
                        
url url+"&"+appendRandomValue+"="+Math.random();
                    }else{
                        
url url+"?"+appendRandomValue+"="+Math.random();
                    }
                }
            }
            
            
            if(
method == postMethod){
                if(
urlParam[1] != undefined){
                    
parameters urlParam[1];
                }
                
                if(
appendRandom){
                    if(
urlParam[1] != undefined){
                        
parameters parameters+"&"+appendRandomValue+"="+Math.random();
                    }else{
                        
parameters appendRandomValue+"="+Math.random();
                    }
                }
                
            }

        
xmlhttp.open(methodurlasynchronous);
        
xmlhttp.setRequestHeader("connection""close");
            
            if(
method == postMethodxmlhttp.setRequestHeader("Content-type""application/x-www-form-urlencoded");
            
            if(
asynchronousxmlhttp.onreadystatechange = function(){
                                                                if(
xmlhttp.readyState === readyState.COMPLETATO){
                                                                    
verificaTempoTrascorso = function(){};
                                                                        if(
statusText[xmlhttp.status] === "OK" || statusText[xmlhttp.status] === "Not Modified"){
                                                                                if(
typeof(funzioneDone) === "function")   funzioneDone.call(thisxmlhttp.responseTextdiv);
                                                                        }else{
                                                                            
alert("Errore:\n" xmlhttp.statusText);
                                                                        }
                                                                }else if(
massimaAttesa 1000){
                                                                    
massimaAttesa          massimaAttesa 1000;
                                                                    
verificaTempoTrascorso = function(){
                                                                                                
dataChiamata = new Date();
                                                                                                    if((
dataChiamata.getTime() - inizioChiamata) > massimaAttesa){
                                                                                                        
xmlhttp.onreadystatechange = function(){return;};
                                                                                                        
xmlhttp.abort();
                                                                                                        
alert("Spiacente, richiesta fallita.\nLa prego di ritentare tra qualche istante.");
                                                                                                    }else{
                                                                                                        
setTimeout(verificaTempoTrascorso100);
                                                                                                    }
                                                                                                };
                                                                    
verificaTempoTrascorso();
                                                                }
                                                                    
                                                            };

                                                                                                                        
            try{
                
xmlhttp.send(parameters);
                    if(!
asynchronous){
                        if(
typeof(funzioneDone) === "function")   funzioneDone.call(thisxmlhttp.responseTextdiv);
                    }
            }catch (
e){
                
xmlhttp.abort();
                
alert("Spiacente, richiesta fallita.\nLa prego di ritentare tra qualche istante.");
            }
            
            
        return 
useDegradableHref;
    }


var 
readyState = {
    
INATTIVO:    0,
    
INIZIALIZZATO:    1,
    
RICHIESTA:    2,
    
RISPOSTA:    3,
    
COMPLETATO:    4
};

var 
statusText = new Array();
statusText[100] = "Continue";
statusText[101] = "Switching Protocols";
statusText[200] = "OK";
statusText[201] = "Created";
statusText[202] = "Accepted";
statusText[203] = "Non-Authoritative Information";
statusText[204] = "No Content";
statusText[205] = "Reset Content";
statusText[206] = "Partial Content";
statusText[300] = "Multiple Choices";
statusText[301] = "Moved Permanently";
statusText[302] = "Found";
statusText[303] = "See Other";
statusText[304] = "Not Modified";
statusText[305] = "Use Proxy";
statusText[306] = "(unused, but reserved)";
statusText[307] = "Temporary Redirect";
statusText[400] = "Bad Request";
statusText[401] = "Unauthorized";
statusText[402] = "Payment Required";
statusText[403] = "Forbidden";
statusText[404] = "Not Found";
statusText[405] = "Method Not Allowed";
statusText[406] = "Not Acceptable";
statusText[407] = "Proxy Authentication Required";
statusText[408] = "Request Timeout";
statusText[409] = "Conflict";
statusText[410] = "Gone";
statusText[411] = "Length Required";
statusText[412] = "Precondition Failed";
statusText[413] = "Request Entity Too Large";
statusText[414] = "Request-URI Too Long";
statusText[415] = "Unsupported Media Type";
statusText[416] = "Requested Range Not Satisfiable";
statusText[417] = "Expectation Failed";
statusText[500] = "Internal Server Error";
statusText[501] = "Not Implemented";
statusText[502] = "Bad Gateway";
statusText[503] = "Service Unavailable";
statusText[504] = "Gateway Timeout";
statusText[505] = "HTTP Version Not Supported";
statusText[509] = "Bandwidth Limit Exceeded";

function 
ajaxDone(responseText,target){
    
_getElementById(target).innerHTML responseText;
}

function 
ajaxLoading(){
    
_getElementById("loader").innerHTML "loading";
}
function 
ajaxLoaded(){
    
_getElementById("loader").innerHTML "loaded";
}

var 
    
funzioneDone    ajaxDone,
    
div             "test",
    
asincrono       false,
    
metodo          "get";

function 
test(link){
    
ajaxLoading();
    var 
ajax ajaxDo(link,funzioneDone,div,asincrono,metodo);
    
ajaxLoaded();
    return 
ajax;
}
</script>
</head>

<body>
[url="http://localhost/post_get.php?a=b&c=d&f=g"]Test[/url]
<div id="loader">qui il div info</div>
<div id="test"></div>
</body>
</html> 
Il contenuto della pagina post_get.php invece è questo:
Codice PHP:
<?php
sleep
(5);
echo 
time()."POST: <pre>";
print_r($_POST);
echo 
"</pre>";
echo 
"GET: <pre>";
print_r($_GET);
echo 
"</pre>";
?>
Grazie per il tuo interessamento!