我有一段JavaScript:
$.ajax({ type: "POST",
url: theRightUrl,
data: whatToPost,
logFunction: whatever,
suppressSuccessLogging: !0
});
一旦此代码运行,POST就可以了,服务器返回202 Accepted
,内容长度设置为零,没有内容类型标头。这使Firefox在其JavaScript控制台中显示no element found
错误。
看起来问题是Firefox tries to decode the response as XML,解决方法是将服务器配置为返回“text / plain”作为内容类型。但是我无法改变服务器行为,我必须在客户端上进行处理。
我尝试添加dataType: 'html'
或dataType: 'text'
,这应该指示jQuery不要尝试将响应解析为XML,但我发现行为没有变化。
我可以对客户端代码做什么,以便不解析空响应吗?
答案 0 :(得分:1)
我知道这个问题已经过时了,但我将其留给有人可能会在未来使用它。
我有同样的问题。我期待done (success)
的空响应和fail (error)
的JSON,我设置了dataType:'json',它在no element found
上给了我JSON.parse
+ done
错误}。当请求成功时,我在响应中发送了一个空对象{}
,并将标题设置为'application / json',它解决了我的问题。现在,响应有一些价值,它是json格式。 :)
response.setContentType("application/json");
response.getWriter().write("{}");
此外,作为this answer says,某些浏览器会抱怨该消息是否为空。因此,我们需要发送与我们预期的dataType
相关的内容,以便浏览器和jQuery都不会出现错误。
答案 1 :(得分:0)
我只对仅使用HTTPStatus
返回ResponseEntity的端点有问题我修复了它们,设置了JQuery请求:
dataType: 'text'
并且Controller必须在ResponseEntity对象中返回Text:
return new ResponseEntity<String>("Process Completed Successfully", HttpStatus.NO_CONTENT);