Ho modificato leggermente il tuo codice e va con IE9, IE compatibilità, Firefox, Opera e Chrome.
NOn ho provato con IE4

Ecco il codice:
codice:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="a.aspx.vb" Inherits="prove_a" %>

<!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 runat="server">
    <title></title>
    <script type="text/javascript">
// <![CDATA[

function loadXMLDoc()
{
    var xmlhttp; alert('entrato');
    if (window.XMLHttpRequest) 
    {
        alert('entrato1');
        xmlhttp = new XMLHttpRequest();
    }
    else
    {	
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        alert('entrato2');
    }	
    
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {	
            //alert(xmlhttp.responseText);
            document.getElementById('Ajax').innerHTML = xmlhttp.responseText; 
            alert('entrato3');	
            
        }	
    }	

    var url = "?ajax_comando=1";
    var parametri = "Rai 1=" + encodeURIComponent("Rai 1 prova xyz");

    xmlhttp.open('POST', url, true);
    xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    xmlhttp.setRequestHeader('Content-length',parametri.length);
    
    xmlhttp.send(parametri);	
}

// ]]>
</script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <input id="Button1" type="button" value="button" onclick="loadXMLDoc();" />
        


        <div id="Ajax"></div>
    </div>
    </form>
</body>
</html>
codice vb
codice:
Option Strict On
Imports l = libreria.ModuloWeb

Partial Class prove_a
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Dim ajax_comando As String = Me.Request.QueryString("ajax_comando")
        If ajax_comando = "1" Then
            Dim Rai1 As String = Request.Form("Rai 1")

            Response.Write("#" + Rai1 + "#")
            Response.End()

        End If
    End Sub
End Class
come vedi, puoi benissimo richiamare una pagina aspx. In questo caso ho usato ?, ossia, la pagina corrente.

Gli spedisco pure via get, il parametro ajax_comando.

Lato server, controllo questo parametro (ajax_comando). Se è valorizzato, dò la risposta, ma CHIUSA DA UN BEL RESPONSE.END

PS. Questo codice va benissimo a scopo didattico. Il passo successivo però è farsi una bella funzione javascript riutilizzabile, da invocare ogni volta che serve fare una chiamata ajax.
Solo a titolo di esempio, qualcosa del genere:

function ajax(url, onload, parameters, onerror) {...}