我正在运行一个简单的网站,它使用 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
为 null,我从 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 解析错误
.
谁能解释一下为什么我在交换 JSON 时遇到 XML 解析错误?
注意:我使用的是 Firefox 和 Tomcat9。
提前谢谢您。
最佳答案
简单地说,我发现虽然我期望通过 dataType
获得请求中的 json 内容,但 servlet 并未指定其响应也使用该类型进行编码。
添加:
response.setContentType("application/json");
解决了问题。
关于json - 当我期望 JSON 时得到 "XML Parsing Error: not well-formed",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347771/