我正在运行一个简单的网站,该网站使用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。
谢谢。
答案 0 :(得分:0)
简而言之,我发现当我期望通过dataType
在请求中包含json内容时,该servlet并未指定其响应也使用该类型进行编码。
添加:
response.setContentType("application/json");
解决了问题。