我必须对 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