因为在你alert的时候 请求还木有发送 所以他的readyState是1
你这样试下就明白了function getxml()
{    
    var url="getxml.php?id="+Math.random();
    var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttp.open("GET",url,true);
    xmlhttp.onreadystatechange = function() {
alert(xmlhttp.readyState);
    }
    xmlhttp.send(null);
}

解决方案 »

  1.   

    xmlhttp.onreadystatechange = function() {}使用回调函数.表示http请求完成的调用的函数.
    这时就能成功的取的state了.
    (xmlhttprequest是需要时间的)
      

  2.   

    xmlhttp.open("GET",url,true);
                //alert(xmlhttp.readyState);
                xmlhttp.send(null);           请求都没发呢 肯定不行 你把他写到别的地方
                req.onreadystatechange = callback;
            例如这样调用一个函数,再调用的函数里面显示xmlhttp.readystated的状态就可以看见他状态的变化了
           
      

  3.   

    onreadystatechange的回调函数会在HTTP协议的不同状态多次执行的,值会从1最后变到4,是一个动态的过程