ajax的xmlhttp.readystate一直等于2

 window.onload = function(){
        var xmlHttp = createXMLHttpRequest();
        xmlHttp.open("GET","<c:url value='/ProvinceServlet'/>",true);
        xmlHttp.send(null);
        xmlHttp.onreadystatechange = function(){
            if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
                var text = xmlHttp.responseText;
                var proArray = eval("("+text+")");
                //document.write(xmlHttp.readyState);
                //document.write(xmlHttp.status == 200);
                for(var i=0;i<proArray.length;i++){
                    var pro = proArray[i];
                    var option = document.createElement("option");
                    option.value = pro.pid;
                    var node = document.createTextNode(pro.name);
                    option.appendChild(node);
                    document.getElementById("p").appendChild(option);
                }
            }else {
                document.write(xmlHttp.readyState==4);
                document.write(xmlHttp.status == 200);
            }
        };
    };

xmlHttp.status == 200 输出是true,但是xmlHttp.readyState==4输出是false。

以下是servlet的代码:

 public class ProvinceServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        Dao dao = new Dao();
        List<Province> listProvinces = dao.findAllProvince();
        String jsonProvince = JSONArray.fromObject(listProvinces).toString();
        response.getWriter().print(jsonProvince);
    }

}

应该是ie下缓存了,加时间戳防止缓存

  xmlHttp.open("GET","<c:url value='/ProvinceServlet'/>?_"+new Date().getTime(),true);

ajax状态

感觉是服务器端数据处理的原因。

网页源码

我意思是从这里面看那个ajax的url地址是什么。

图片说明

 0 - (未初始化)还没有调用send()方法 
1 - (载入)已调用send()方法,正在发送请求 
2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 
3 - (交互)正在解析响应内容 
4 - (完成)响应内容解析完成,可以在客户端调用了 

对症下药吧。