Servlet 对 Javascript 的响应以纯文本显示在浏览器上
Servlet Response to Javascript in plain text shown on browser
我让我的 servlet 向 JS ajax 调用发送以下响应:
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.print("start");
out.close();
网页调用的代码如下:
function update() {
var xmlhttp = new XMLHttpRequest();
var id = '${user.id}';
var height = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
height = height-40;
var params = "action=update&id=" + id + "&height=" + height;
xmlhttp.open("POST", "/Anabasis/UserControl", true);
xmlhttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var answer = xmlhttp.responseText;
if(answer=="start"){
window.location.href = "/project/page1.jsp";
} else {
window.location.href = "/project/page2.jsp";
}
}
};
xmlhttp.send(params);
}
setTimeout(update, 10000);
如果 start 由 Servlet 发回,浏览器应该被重定向到另一个页面。这可以在用户不做任何事情的情况下完成,因为 JS 请求每 10 秒发送一次。
现在的结果是我没有得到页面的答案,只有一个黑色的页面,上面有文字:"start"
谁能告诉我要添加什么以确保答案返回给 JS 函数?
我已经找到解决办法了,抱歉这个问题。代码实际上工作正常,只是在某些情况下,Servlet 没有被这个更新函数调用,而是被同一页面的另一个表单调用。所以答案当然不会发送到函数,解释不当行为。
是否有关于 Servlet 与网页通信的最佳实践指南?我想我非常需要它。
最好根据您的要求forward
您的要求,例如:
RequestDispatcher rd=request.getRequestDispatcher("./project/page1.jsp");
rd.forward(request, response);
我让我的 servlet 向 JS ajax 调用发送以下响应:
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
out.print("start");
out.close();
网页调用的代码如下:
function update() {
var xmlhttp = new XMLHttpRequest();
var id = '${user.id}';
var height = (window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight);
height = height-40;
var params = "action=update&id=" + id + "&height=" + height;
xmlhttp.open("POST", "/Anabasis/UserControl", true);
xmlhttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var answer = xmlhttp.responseText;
if(answer=="start"){
window.location.href = "/project/page1.jsp";
} else {
window.location.href = "/project/page2.jsp";
}
}
};
xmlhttp.send(params);
}
setTimeout(update, 10000);
如果 start 由 Servlet 发回,浏览器应该被重定向到另一个页面。这可以在用户不做任何事情的情况下完成,因为 JS 请求每 10 秒发送一次。
现在的结果是我没有得到页面的答案,只有一个黑色的页面,上面有文字:"start"
谁能告诉我要添加什么以确保答案返回给 JS 函数?
我已经找到解决办法了,抱歉这个问题。代码实际上工作正常,只是在某些情况下,Servlet 没有被这个更新函数调用,而是被同一页面的另一个表单调用。所以答案当然不会发送到函数,解释不当行为。
是否有关于 Servlet 与网页通信的最佳实践指南?我想我非常需要它。
最好根据您的要求forward
您的要求,例如:
RequestDispatcher rd=request.getRequestDispatcher("./project/page1.jsp");
rd.forward(request, response);