我正在开发一项在部署到测试环境中时运行良好的服务。
我打开网页,JavaScript 调用如下:
$.ajax( {
url: url,
error: function(xhr, status, error) {
displaySummaryText(xhr.responseText);
},
success: function(returnData) {
displayRequestSummaryData(returnData, start);
}
})
返回结果如下:
returnData
(397) [{…}, {…}, {…}, {…}, {…}..etc
returnData 包含一个映射数组,其中来自 java 对象的数据映射到 pojo。
但是,当我采用相同的服务(进行了一些不相关的更改)并在本地环境中运行它时,我得到了非常不同的行为,它在 javascript 调试器中显示为:
#document
长度、[0]等都返回未定义。
如果我在浏览器控制台中查看返回的对象,我会看到
<List><item><date/><time/><sym/><id>Valid data here</id><userId/><userRequestId/></item>
</List>
其中确实包含我期望在本例中看到的内容 - 但它似乎是 #document 对象内的 xml/文本,而不是已被解析。
当 javascript 似乎没有尝试解析 ajax 调用的响应时,什么会导致这种行为?
正如 @bergi 在评论中所建议的,发生这种情况是因为服务器使用 XML 而不是 JSON 进行响应,并且 javascript 没有解析它。
我将
produces = "application/json")
添加到 Get Mapping 注释中以强制其为 Json,并且它立即开始正常工作。