为了账号安全,请及时绑定邮箱和手机立即绑定

jQueryajax错误处理,显示自定义异常消息。

jQueryajax错误处理,显示自定义异常消息。

汪汪一只猫 2019-06-20 10:44:08
jQueryajax错误处理,显示自定义异常消息。有什么方法可以在jQueryAjax错误消息中显示自定义异常消息作为警报吗?例如,如果我想在服务器端通过支柱通过throw new ApplicationException("User name already exists");,我想在jQueryAjax错误消息中捕获此消息(“用户名已经存在”)。jQuery("#save").click(function () {   if (jQuery('#form').jVal()) {     jQuery.ajax({       type: "POST",       url: "saveuser.do",       dataType: "html",       data: "userId=" + encodeURIComponent(trim(document.forms[0].userId.value)),       success: function (response) {         jQuery("#usergrid").trigger("reloadGrid");         clear();         alert("Details saved successfully!!!");       },       error: function (xhr, ajaxOptions, thrownError) {         alert(xhr.status);         alert(thrownError);       }     });   }});在第二个警报中,当我警告抛出的错误时,我得到undefined状态代码是500。我不知道我哪里出了问题。我能做些什么来解决这个问题?
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

确保你正在设置Response.StatusCode不是200块。使用Response.Write那就用.。

xhr.responseText

.在你的javascript里


查看完整回答
反对 回复 2019-06-20
?
萧十郎

TA贡献1815条经验 获得超13个赞

服务器端:

     doPost(HttpServletRequest request, HttpServletResponse response){ 
            try{ //logic
            }catch(ApplicationException exception){ 
               response.setStatus(400);
               response.getWriter().write(exception.getMessage());
               //just added semicolon to end of line

           }
 }

客户端:

 jQuery.ajax({// just showing error property
           error: function(jqXHR,error, errorThrown) {  
               if(jqXHR.status&&jqXHR.status==400){
                    alert(jqXHR.responseText); 
               }else{
                   alert("Something went wrong");
               }
          }
    });

通用Ajax错误处理

如果我需要对所有Ajax请求执行一些通用错误处理。我将设置ajaxError处理程序,并将错误显示在html内容顶部名为error容器的div上。

$("div#errorcontainer")
    .ajaxError(
        function(e, x, settings, exception) {
            var message;
            var statusErrorMap = {
                '400' : "Server understood the request, but request content was invalid.",
                '401' : "Unauthorized access.",
                '403' : "Forbidden resource can't be accessed.",
                '500' : "Internal server error.",
                '503' : "Service unavailable."
            };
            if (x.status) {
                message =statusErrorMap[x.status];
                                if(!message){
                                      message="Unknown Error \n.";
                                  }
            }else if(exception=='parsererror'){
                message="Error.\nParsing JSON Request failed.";
            }else if(exception=='timeout'){
                message="Request Time out.";
            }else if(exception=='abort'){
                message="Request was aborted by the server";
            }else {
                message="Unknown Error \n.";
            }
            $(this).css("display","inline");
            $(this).html(message);
                 });


查看完整回答
反对 回复 2019-06-20
?
芜湖不芜

TA贡献1796条经验 获得超7个赞

主计长:

public class ClientErrorHandler : FilterAttribute, IExceptionFilter{
    public void OnException(ExceptionContext filterContext)
    {
        var response = filterContext.RequestContext.HttpContext.Response;
        response.Write(filterContext.Exception.Message);
        response.ContentType = MediaTypeNames.Text.Plain;
        filterContext.ExceptionHandled = true;
    }}[ClientErrorHandler]public class SomeController : Controller{
    [HttpPost]
    public ActionResult SomeAction()
    {
        throw new Exception("Error message");
    }}

视图脚本:

$.ajax({
    type: "post", url: "/SomeController/SomeAction",
    success: function (data, text) {
        //...
    },
    error: function (request, status, error) {
        alert(request.responseText);
    }});


查看完整回答
反对 回复 2019-06-20
  • 3 回答
  • 0 关注
  • 2375 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信