json - 当我期望 JSON 时得到“XML Parsing Error: not well-formed”
问题描述
我正在运行一个使用 ajax 和 jquery 与 TestServlet 通信的简单网站。servlet 使用 doGet() 给出一个 JSON 对象,如下所示:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String json = "{\"name\": \"jsontest\",\"type\":\"jsonobject\"}";
response.getWriter().append(json);
}
当在页面上按下按钮时,会发出 ajax 请求,如下所示:
$.ajax({
type: "GET",
url: "test",
data: "",
dataType: "json",
success: function(reply) { window.alert("Success\n"+reply); },
error: function(err) { window.alert(err); }
});
请求获得成功,但reply
为空,我从 Web 控制台获得:
XML Parsing Error: not well-formed
Location: http://localhost:8585/web/test
Line Number 1, Column 1: {"name": "jsontest","type":"jsonobject"}
我试图指定mimeType: "application\json"
,但我得到了相同的行为。相反,当我没有指定dataType
或输入时,contentType: "json"
我成功地正确读取了 JSON 字符串,但仍然得到XML Parsing Error
.
谁能解释为什么在我打算交换 JSON 时出现 XML 解析错误?
注意:我使用的是 Firefox 和 Tomcat9。
先感谢您。
解决方案
简单地说,我发现虽然我在请求中期待 json 内容dataType
,但 servlet 并没有指定它的响应也是用那种类型编码的。添加:
response.setContentType("application/json");
解决了这个问题。
推荐阅读
- django - 如何强制 django.allauth 要求电子邮件
- java - 部署目标期间 maven-resources-plugin 中的 IllegalArgumentException
- python - KivyMD:在 python 代码中添加列表小部件,“on_release”问题 - 属性
- c - 尝试创建一个 C 程序,逐字查找字符串的反转
- python - 同一个盒子上的容器之间的可靠锁定
- swiftui - SwiftUI - Catalyst 半透明侧边栏
- indexing - AEM Oak Index 不可靠的成本估算
- mongodb - 按星期几汇总文档
- angular - 将服务作为 @Input() 参数传递给子组件
- c# - 有没有可能使用 c# 获取原始 .wav 文件的实际波长的方法?