gpt4 book ai didi

java - 处理来自 Servlet 的 Jquery AJAX 响应中的异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:07:24 26 4
gpt4 key购买 nike

我的servlet代码是

try{
//something
response.setStatus(201);
out.print("Data successfully saved");
}
catch(SomeException e){
response.sendError(400, e.getMessage());
}

我的 JQuery Ajax 函数有如下成功和错误 block :

$.ajax({
type:'POST',
data: {
//some data to be passed
},
dataType: 'text',
url:'AjaxController',
success: function(response){
alert(response);
},
error: function(jqXHR, textStatus, message) {
//error handling
},
complete: function(){
//window.location.reload(true);
}
});

servlet中的异常可以有不同的消息,所以我的意图只是将状态码和消息传递给客户端,以便在一个span中显示。如果成功,成功 block 正在接收响应,我看到我在 out.print() 中写入的任何内容都在其中。

但如果出现消息错误,我有两个选择:

  1. 将与 success 相同的内容写入 out.print 并在 Ajax 函数的 success block 中,编写多个带有状态代码的检查并决定是显示成功消息还是错误消息。我不赞成这样做,因为我觉得它紧密耦合,并且仍然将错误的请求或异常实现为成功的操作。

  2. 使用 response.sendError(status_code::int, e.getMessage()::String)尽管这确保调用了 Ajax 中的错误 block ,但 sendError API 会创建一个 HTML 页面,放入我的消息并发送它,我无法直接访问它。所以在 AJAX 中,我将被迫编写一个解析器来获取异常消息。这在我心中也是NO NO。

如何实现这种异常处理?

我已尽力以最好的方式进行解释,如果需要更多信息,请告诉我。它是一个简单的 API,客户端使用表单数据调用 servlet,这些数据要么在服务器中创建/更新,要么在某些条件不匹配时失败。并在一个跨度内,在相同的表单页面中显示成功或异常信息。

最佳答案

我试过这个,发现状态为 400 的异常现在进入错误 block ,我能够在错误 block 内使用 jqXHR.responseText 检索消息。我刚刚做了:

response.setStatus(400);
out.print(e.getMessage());
out.flush();

关于java - 处理来自 Servlet 的 Jquery AJAX 响应中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37298435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com