Java servlet对JavaScript的响应
Java servlet response to JavaScript
我正试图让Java Servlet发送一些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函数:
this.updateVehicleList = function () {
var type = "locos";
var xhr = new XMLHttpRequest();
xhr.open('GET', 'GetList?type=' + encodeURIComponent(type),true);
xhr.send(null);
//deal with response
var res = xhr.responseText;
//for testing
if (res == "") {
window.alert("I'm getting nothing");
}
view.showVehicleList(res);
};
每次都会输出"我一无所获"的消息。如何让JavaScript实际接收Servlet的响应?
您正在进行异步请求,因此无法立即获得响应。您正试图在收到响应之前获取responseText
。
使用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);
// ^^^^^
相关文章:
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 如何从SeleniumWebdriver获取异步Javascript响应
- 如何在 JavaScript 和 HTML 中更改对输入框的提示响应
- 显示IIS上javascript文件(SOAP请求)的XML响应
- 带有对象解析的响应javascript ajax失败
- ajax响应JavaScript中的文档对象
- 为什么不't使用PHP动态生成的HTML响应JavaScript
- JSON 分页响应 JavaScript
- 从 stomp 消息响应 (JavaScript) 迭代 json 数组
- 检查我的服务器是否正在响应[Javascript]
- 在rails 4中将remote选项设置为true后,Link_to标签没有响应javascript
- 我怎么能强迫元素在一个固定的定位元素响应javascript的onclick事件在Android web浏览器
- 在CodeIgniter中,模板上动态添加的内容不响应Javascript/AJAX/Jquery
- 如何在PHP中有一个动作响应javascript
- Vimeo不响应Javascript在iOS应用程序
- 编辑表设计以响应Javascript启用/禁用
- 选项卡只响应javascript和CSS
- 使用 PyQt 输出和响应 Javascript
- Angular JS响应Javascript所做的更改
- Facebook不响应Javascript API调用