ajax没有得到servlet响应200好的

时间:2013-04-19 07:12:15

标签: html ajax servlets

我必须对servlet进行ajax调用并在html中更新页面的一部分。这是我的代码。

<html>
<head>
<script type="text/javascript">

function waitForStatus() {
              alert("link clicked");
              var xmlhttp;
              if (window.XMLHttpRequest)  {
                xmlhttp=new XMLHttpRequest();
                }
              else {
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }


               xmlhttp.onreadystatechange = function () {
                    if (xmlhttp.readyState==4 && xmlhttp.status == 200) {
                       alert("Received response text :::: "+ xmlhttp.responseText);
                       document.getElementById("response").innerHTML=xmlhttp.responseText;
                    }
                };
                xmlhttp.open("GET","test",true);
                xmlhttp.send(null);
           return true;
        }
</script>
</head>
<body>
<a href="TestWS.jnlp" onclick="waitForStatus()" >Download webstart & wait for status</a>
<p id="response"></p>
</body>
</html>

And my servlet is as follows:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        for(int i = 0; i < 5; i ++) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("Slept :: "+ i);
        }
        System.out.println("Sending response now");
        response.setContentType("text/plain");
        response.setStatus(HttpServletResponse.SC_OK);
        PrintWriter out = response.getWriter();
        response.setHeader("Access-Control-Allow-Origin", "*");
        out.write("hello second servlet");
        out.close();

    }

我可以在服务器日志上看到servlet正在发送200OK。但是ajax onreadystatechange没有得到xmlhttp.status == 200并且它没有更新我的字段。我也准备好了状态= 4。在萤火虫中,它没有显示收到200 OK。我不知道我做错了什么。任何人都可以帮忙。此代码完美适用于IE。但是在Firefox上,它根本不起作用。我从服务器加载HTML。     在IE和浏览器上,"http://localhost:8080/myproject/index.html""http://localhost:8080/myproject/test"都可以正常运行。只有当我从ajax打电话时它才能正常工作。

Regards,
Triveni

1 个答案:

答案 0 :(得分:1)

嘿,只需用href =“#”删除href =“TestWS.jnlp”,然后尝试。它会发送回复。

相关问题