Prima di tutto Firefox e firebugs che ti permette di vedere le richieste inviate dal browser.
Poi, se devi usare il get nella pagina madre, perché non lo stampi come una variabile di JS?

Codice PHP:
var chiave = "<?=$_GET['chiave']?>";
function prova(param1, param2){
    var ajax = setXMLHttpRequest();
    if (ajax==null)
     {
     alert ("Browser does not support HTTP Request")
     return
     }
    var url;
    url = "xyz.php?";
    url += "param1="+param1;
    url += "&param2="+param2;
    url += "&chiave="+chiave;
    ajax.onreadystatechange=stateChanged;
    ajax.open("GET",url,true);
    ajax.send(null);
}

function stateChanged()
{
if (ajax.readyState==4 || ajax.readyState=="complete")
{
document.getElementById("xyz").innerHTML=ajax.responseText
}
else
{
    document.write="Attendere prego...";
}
Un'altra cosa, è sempre meglio definire le variabili con i var:

var chiave

var ajax