javascript - 无法将 Json 数据从 Ajax 发送到 Servlet
问题描述
我正在尝试将 JSON 数据从使用 Ajax 的 JavaScript 函数发送到 Servlet。
客户端:
function addObject() {
var data = {
aa: "aa",
bb: "bb"
}
var string = JSON.stringify(data);
var xhttp = new XMLHttpRequest();
xhttp.open("POST", "GalleryAdd", true);
xhttp.setRequestHeader("Content-Type", "application/json");
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
console.log("Done");
}
};
console.log(string);
xhttp.send(string);
}
stringyfied 数据的输出是{"aa":"aa","bb":"bb"}
.
小服务程序:
protected void doPost(HttpServletRequest request, HttpServletResponse response) {
log(request.getParameter("aa"));
log(request.getParameter("bb"));
}
记录器中的输出是null
和null
。
看起来 JavaScript 不会将数据发送到 servlet,即使它被正确地字符串化。任何人?
解决方案
您的 Json 对象位于请求正文中,因此您需要解析InputStream
. 尝试这个。
protected void doPost(HttpServletRequest req, HttpServletResponse resp) {
JsonObject object = Json.createReader(req.getInputStream()).readObject();
log(object.getString("aa"));
log(object.getString("bb"));
}
推荐阅读
- c++ - "undefined reference to" just when using MinGW/GCC compiler, an ambiguous problem?
- javascript - jspsych 'instructions' block not evaluating variable
- sql - SQL Server 过滤索引“估计要读取的行数”是全表的大小
- git - Git 将项目移动到另一个文件夹
- python - 正则表达式与应有的不匹配
- java - 如何在可导出库中正确设置资源
- java - 如何按升序打印数字。如果不做数组,我怎么能做到这一点?
- button - SwiftUI 允许一个按钮只被点击一次
- c# - 浏览列表并在发布请求中检查所有列表的最有效方法
- kernel - insmod 错误,debian 9.5 上的模块格式无效