当使用jQueryajax method提交表单数据时,处理错误的最佳方式是什么? 以下是呼叫可能外观的示例:

$.ajax({
    url: "userCreation.ashx",
    data: { u:userName, p:password, e:email },
    type: "POST",
    beforeSend: function(){disableSubmitButton();},
    complete: function(){enableSubmitButton();},
    error: function(xhr, statusText, errorThrown){
            // Work out what the error was and display the appropriate message
        },
    success: function(data){
            displayUserCreatedMessage();
            refreshUserList();
        }
});

请求可能会因为多种原因而失败,例如重复的用户名、重复的邮箱地址等,当发生这种情况时,将写入ashx以抛出异常.

我的问题似乎是,通过抛出一个异常,ashx导致statusTexterrorThrownundefined.

我可以访问XMLHttpRequest.responseText,其中包含构成标准的HTML.网络错误页面.

我在responseText中查找页面标题,并使用该标题找出抛出了哪个错误.虽然我怀疑当我启用自定义错误处理页时,这会崩溃.

我应该在ashx中抛出错误,还是应该将状态代码作为调用userCreation.ashx返回的数据的一部分返回,然后使用它来决定采取什么操作?
你是如何处理这些情况的?

推荐答案

我是否应该将错误抛出到 ashx,或者我应该返回一个 作为数据一部分的状态代码 由调用 userCreation.ashx,然后使用它 决定采取什么行动?你是怎么做到的 处理这些情况吗?

就我个人而言,如果可能的话,我更愿意在服务器端处理这件事,并向那里的用户发送一条消息.这在您只想向用户显示一条消息(实质上是验证消息)的场景中工作得非常好.

但是,如果您希望根据服务器上发生的事情执行操作,则可能需要使用状态代码并编写一些javascript来根据该状态代码执行各种操作.

Asp.net相关问答推荐

页面刷新后如何存储JS Select 数据

为什么 Web 架构应该是松耦合的?

如何以编程方式设置单元格 colored颜色 epplus?

如何在没有 Select 按钮的情况下在 GridView 中实现全行 Select ?

判断 asp.net mvc 4 应用程序中的 ssl 协议、密码和其他属性

VS2013发布Web部署任务失败文件正在使用中

SameSite 属性如何自动添加到我的 Asp.net_SessionID cookie 中?

在 RedirectToAction 调用中传播 QueryString 参数

忽略默认文档的表单身份验证

与将 Web 应用程序保存在一个默认应用程序池中相比,拥有专用应用程序池的优缺点

HTTP 错误 503.该服务在简单的 ASP.NET 4.0 网站下不可用

是否应该将 project.lock.json 文件签入源代码管理? (ASP.NET 核心 1.0)

修改 web.config 时如何防止 ASP.NET 应用程序重新启动?

实体框架:如何解决外键约束可能导致循环或多个级联路径?

ASP.Net 无法创建/卷影复制

global.asax 中的 Application_Error 未捕获 WebAPI 中的错误

将Bundle 包添加到现有的 ASP.NET Webforms 解决方案

将 html 标记从 jquery 发布调用发送到 asp.net 页面时,从客户端检测到潜在危险的 Request.QueryString 值

GZIP 与 DEFLATE 压缩相比有什么优势?

Unity 中的单例每个调用上下文(Web 请求)