如何设置我的Ajax POST请求以防止"找不到元素"在空洞的回应?

时间:2014-03-19 10:52:42

标签: javascript jquery ajax firefox

我有一段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,但我发现行为没有变化。

我可以对客户端代码做什么,以便不解析空响应吗?

2 个答案:

答案 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);