首页 > 解决方案 > 当我期望 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。

先感谢您。

标签: jsonajaxxmlservlets

解决方案


简单地说,我发现虽然我在请求中期待 json 内容dataType,但 servlet 并没有指定它的响应也是用那种类型编码的。添加:

response.setContentType("application/json");

解决了这个问题。


推荐阅读