Ajax 调用 java 获取“#document”而不是有用的对象列表

问题描述 投票:0回答:1

我正在开发一项在部署到测试环境中时运行良好的服务。

我打开网页,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 调用的响应时,什么会导致这种行为?

javascript ajax
1个回答
0
投票

正如 @bergi 在评论中所建议的,发生这种情况是因为服务器使用 XML 而不是 JSON 进行响应,并且 javascript 没有解析它。

我将

 produces = "application/json")
添加到 Get Mapping 注释中以强制其为 Json,并且它立即开始正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.