当我期望JSON时,出现“ XML解析错误:格式不正确”

时间:2018-07-15 11:05:56

标签: json ajax xml servlets

我正在运行一个简单的网站,该网站使用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。

谢谢。

1 个答案:

答案 0 :(得分:0)

简而言之,我发现当我期望通过dataType在请求中包含json内容时,该servlet并未指定其响应也使用该类型进行编码。 添加:

response.setContentType("application/json");

解决了问题。