我必须对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
答案 0 :(得分:1)
嘿,只需用href =“#”删除href =“TestWS.jnlp”,然后尝试。它会发送回复。