Javaservlet对JavaScript的响应
我试图让一个Javaservlet发送一些HTML作为对JavaScript函数请求的响应。然而,当servlet函数被调用并似乎在发送响应时,Javascript函数只得到一个空字符串 以下是Servlet方法:Javaservlet对JavaScript的响应,javascript,java,servlets,xmlhttprequest,Javascript,Java,Servlets,Xmlhttprequest,我试图让一个Javaservlet发送一些HTML作为对JavaScript函数请求的响应。然而,当servlet函数被调用并似乎在发送响应时,Javascript函数只得到一个空字符串 以下是Servlet方法: String type = request.getParameter("type"); if(type.equals("locos")) { response.setContentType("text/html"); //this p
String type = request.getParameter("type");
if(type.equals("locos")) {
response.setContentType("text/html");
//this prints out
System.out.println("Responding with vehicle list");
//deal with response
PrintWriter out = response.getWriter();
out.write("<p>test response</p>"); //finish
}
每次都会输出“我一无所获”消息。如何让JavaScript实际接收来自Servlet的响应?您正在发出一个异步请求,因此响应不能立即可用。您试图在收到响应之前获取
响应文本
使用onreadystatechange
事件:
...
...
xhr.send(null);
xhr.onreadystatechange = function () {
if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200){
//deal with response
var res = xhr.responseText;
//for testing
if (res == "") {
window.alert("I'm getting nothing");
}
view.showVehicleList(res);
}
};
如果您打算发出同步请求,那么将第三个参数设置为false
,您的原始代码将正常工作
xhr.open('GET', 'GetList?type=' + encodeURIComponent(type),false);
// ^^^^^
成功了。谢谢。相关:
xhr.open('GET', 'GetList?type=' + encodeURIComponent(type),false);
// ^^^^^