0

我必须对 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。 "http://localhost:8080/myproject/index.html"并且"http://localhost:8080/myproject/test"在 IE 和浏览器上都可以正常工作。仅当我从 ajax 调用时,它才不起作用。

Regards,
Triveni
4

1 回答 1

1

嘿,只需使用 href="#" 删除 href="TestWS.jnlp" 然后尝试。它将发送响应。

于 2013-04-19T12:14:03.497 回答