Javaservlet对JavaScript的响应

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

我试图让一个Javaservlet发送一些HTML作为对JavaScript函数请求的响应。然而,当servlet函数被调用并似乎在发送响应时,Javascript函数只得到一个空字符串

以下是Servlet方法:

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);
//                                                         ^^^^^