onreadystagechange只调用一次(套接字和ajax)

onreadystagechange只调用一次(套接字和ajax),ajax,sockets,Ajax,Sockets,我正在用socket测试ajax。我发现我的服务器程序可以接收从客户端发送的数据,并且接收到的xml文件是正确的。但是,onreadystage回调函数只调用了一次(当readyState=1时)。我做错什么了吗? 以下是我与ajax相关的功能: function requestAjax(){ var msg=document.getElementById("msgToSocket").value; var xhr=false;

我正在用socket测试ajax。我发现我的服务器程序可以接收从客户端发送的数据,并且接收到的xml文件是正确的。但是,onreadystage回调函数只调用了一次(当readyState=1时)。我做错什么了吗? 以下是我与ajax相关的功能:

function requestAjax(){
        var msg=document.getElementById("msgToSocket").value;           
        var xhr=false;
        if(window.XMLHttpRequest){
            xhr=new XMLHttpRequest();
            xhr.overrideMimeType("text/xml");
        }
        else if(window.ActiveXObject)
            xhr=new ActiveXObject("Microsoft.XMLHTTP");
        if(xhr){
            xhr.open("GET", "socketSample1Ajax.php?msg="+msg+"&count="+(++ajaxCount), true);
            xhr.onreadystagechange=sendMsgToAjax(xhr);
            xhr.send(null);
        }

    }

function sendMsgToAjax(xhr){
        if(xhr.readyState==4 && xhr.status==200){
            var xmlDoc=xhr.responseXML;
            var read=xmlDoc.getElementsByTagName("read")[0].firstChild.nodeValue;
            var write=xmlDoc.getElementsByTagName("write")[0].firstChild.nodeValue;
            document.getElementById("readParagraph").innerHTML=read;
            document.getElementById("writeParagraph").innerHTML=write;
        }
    }
我的ajax作为socket的客户端:

if(isset($_GET["msg"])){
    $msg=$_GET["msg"];
    if(!socket_write($socket, $msg))
        $resultWrite="Write failed";
    else
        $resultWrite="Written";
}
else{
    socket_write($socket, "No data input");
    $resultWrite="No data written";
}
$buffer=socket_read($socket, 1024, PHP_BINARY_READ)or die(socket_last_error($socket)."\n");
if(!$buffer)
    $resultRead="No data";
else
    $resultRead="Buffer Data: ".$buffer;
socket_close($socket);
谢谢你的帮助