如何使用 C# MVC4 调用 $.ajax 中的错误函数?

2024-04-03

我有一个使用 C# 的 MVC4 项目。在这个项目中,我的一个控制器有一个由 Ajax 函数调用的方法:

[HttpPost]
public string EditPackage(int id, string newPkgName)
{
    try{
        //do logic here
        return "OK";
    }catch(Exception exc){
        return "An error occurred, please try later! " + exc.Message;
    }
}

该方法由以下 Ajax 函数使用 jQuery 调用:

$.ajax({
    url: $(this).data('url'),
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    traditional: true,
    data: JSON.stringify({ id: id, newPkgName: newPkgName}),
    success: function () {
        location.reload(true);
        successNotification("Package edited successfuly!");
    },
    error: function (message) {
        errorNotification(message);
    }
});

这段代码的问题在于,即使服务器返回了return"An error occurred, please try later! " + exc.Message;catch 中的消息,成功函数是始终被调用的函数。

换句话说,无论我做什么,我都不会运行错误函数。

为了解决这个问题,我检查了官方文档:

  • http://api.jquery.com/jQuery.ajax/ http://api.jquery.com/jQuery.ajax/

然而,由于我对此相当陌生,所以我无法理解任何参数,也无法理解如何有效地使用它们。

如何使用 Ajax、jQuery 和我的控制器创建包含所有可能信息的良好错误消息?


The error的一部分$.ajax仅当返回的状态代码不是以下任何内容时才会触发调用200 OK。在您的情况下,您将返回一个明文响应,因此将是200。您可以像这样更改此行为:

try {
    // do logic here
    return "OK";
}
catch (Exception exc) {
    return new HttpStatusCodeResult(HttpStatusCode.BadRequest, "Bad Request");
}
error: function (jqXHR, textStatus, errorThrown) {
    errorNotification(textStatus);
}

您可以更改HttpStatusCode任何适合您需要的东西。

或者,您可以保留200响应并返回带有标志的 JSON,以指示请求是否成功:

[HttpPost]
public ActionResult EditPackage(int id, string newPkgName)
{
    try {
        //do logic here
        return Json(new { Success = true, Message = "OK"});
    }
    catch (Exception exc) {
        return Json(new { Success = false, Message = "An error occurred, please try later! " + exc.Message });
    }
}

然后你可以删除error处理程序,并检查标志的状态success处理程序:

success: function(response) {
    if (response.Success) {
        location.reload(true);
        successNotification("Package edited successfuly!");
    }
    else {
        errorNotification(response.Message); 
    }
},
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 C# MVC4 调用 $.ajax 中的错误函数? 的相关文章

  • 使用本机 JavaScript 获取过渡中的 CSS 值

    这个问题之前被问过 但答案使用了 jQuery here https stackoverflow com q 8920934 3186555 因此 我将调整问题以专门询问native解决方案 to 最小化依赖关系 假设您有一个 div 然后
  • 水平平滑滚动 100px

    Heyjo problem 一周以来我一直在寻找 javascript 或 jQuery 代码 以便在我的网站上实现滚动按钮 我失败的那一刻是按钮应该多次工作的时候 他的任务不是滚动到专用元素 而是应该向左滚动 例如 100px 此外 滚动
  • Cosmos DB 中的 MaxItemCount 源选项属性不起作用

    我正在尝试编写一个运行 SQL 查询的简单存储过程 并且我想通过使用 MaxItemCount 属性来限制结果 查询生成 3 个文档 但我只想返回 1 个文档 我使用 MaxItemCount 属性强制执行此限制 但这似乎不起作用 func
  • 使用宏计算源文件行数?

    是否可以使用 C C 预处理器将源文件中的行数计算为宏或某种编译时可用值 例如 我可以更换吗MAGIC1 MAGIC2 and MAGIC3在下面 并在使用时以某种方式获取值 4MAGIC3 MAGIC1 can be placed whe
  • 数组与映射的性能

    我必须循环一个大数组中的元素子集 其中每个元素都指向另一个元素 问题来自于检测大图中的连接组件 我的算法如下 1 考虑第一个元素 2 将下一个元素视为前一个元素所指向的元素 3 循环直到没有发现新元素 4 考虑1 3中尚未考虑的下一个元素
  • char* argv[] 在 c/c++ 中如何工作? [复制]

    这个问题在这里已经有答案了 我知道它用于使用命令行中的参数 但我没有得到声明 字符 argv 它是否意味着指向 char 数组的指针 如果是的话为什么没有大小 如果不是动态数组 就不需要有大小吗 我做了一些研究 发现有人说它会衰减为 cha
  • 将 jQuery 版本从 1.7.1 升级到 1.11.2

    在我当前的应用程序中 我使用的是 jQuery 版本 1 7 1 现在 我计划将jQuery版本升级到1 11 2 是否有任何补丁可以提供与现有应用程序的向后可比性 Thanks 尝试这个 http blog jquery com 2013
  • javascript:window.print() 打印 2 页,而我有 1 页

    我有一个简单的 HTML 文档 其中仅包含图像标签 我想在文档加载后打印图像 我的代码 img src form1 jpg alt form1 style margin 0 auto display block 它可以工作 但问题是它打印图
  • C# Julian 日期解析器

    我在电子表格中有一个单元格 它是 Excel 中的日期对象 但当它来自 C1 的 xls 类时 它会变成双精度型 类似于 2009 年 1 月 7 日的 39820 0 我读到这是儒略日期格式 有人可以告诉我如何在 C 中将其解析回 Dat
  • 允许使用 grunt browserify 进行全局转换

    我已将 jQuery 添加为 html 文件中的脚本标记 并将其添加到package json与一起工作browserify shim如下 browserify transform browserify shim browserify sh
  • 参数数量在编译时确定的 Lambda 函数

    我想声明一个带有 N 个参数的 lambda 函数 其中 N 是模板参数 就像是 template
  • 在角度控制器中监听文档事件

    如何捕获角度控制器中的事件 我有文档级事件 所以我需要在角度控制器中捕获事件 这可能吗 Update 我有独立的 js 文件来处理来自相机的一些操作 document addEventListener myCameraEvent handl
  • 如何按字母顺序排序并先小写排序

    如何获得以下排序的结果Food to Eat然后是 食物123 显然 第二个较低的 o 应该将 要吃的食物 带到排序后的第一个项目中 我很惊讶这个问题不容易通过谷歌找到答案 这个壮举没有包含在 javascript 标准中也让我感到惊讶 F
  • 为什么我不能对普通变量进行多态?

    我是一名Java程序员 最近开始学习C 我对某事感到困惑 据我了解 在 C 中 要实现多态行为 您必须使用指针或引用 例如 考虑一个类Shape与实施的方法getArea 它有几个子类 每个子类都以不同的方式重写 getArea 然后考虑以
  • 字符串 c 的二叉树

    我正在尝试实现一个能够在 c 中保存字符串的二叉树 在让代码适用于整数之后 我尝试稍微修改它以处理字符数组 现在我似乎完全破解了代码 但不知道如何破解 任何帮助表示赞赏 include
  • 支持换行的 JQuery 工具提示

    我正在寻找一个轻量级的 jquery 插件 用于在用户将鼠标悬停在元素上时显示工具提示 我希望插件从标题属性中获取内容 而且我可以创建新行也很重要 任何帮助表示赞赏 在 jQuery 1 9 jquery jquery ui 和标准 too
  • 在 C# WinForms 中预览文档(Word、Excel、PDF、文本文件等)?

    我正在开发一个 C WinForms 应用程序 我希望能够 预览 其中的各种文档类型 也就是说 当用户从列表中选择文件名时 它会在下面以相同的形式显示所选文件的预览 这很像 Outlook 允许您无需双击即可预览选定邮件的方式 有没有什么方
  • 使用 javascript Array reduce() 方法有什么真正的好处吗?

    reduce 方法的大多数用例都可以使用 for 循环轻松重写 对 JSPerf 的测试表明 reduce 通常会慢 60 75 具体取决于每次迭代内执行的操作 除了能够以 函数式风格 编写代码之外 还有什么真正的理由使用reduce 吗
  • Nodejs 一个接一个地运行异步函数

    我是 JS nodejs 的新手 所以如果我不能提出切中要害的问题 请原谅我 所以基本上 如果我有两个异步函数 async function init async function main 如何确保在 init 完成其异步请求后调用 ma
  • 如何从尖点库矩阵格式获取原始指针

    我需要从尖点库矩阵格式获取原始指针 例如 cusp coo matrix

随机推荐

  • 当我们从 s3 中的 csv 文件读取数据并在 aws athena 中创建表时如何跳过标题。

    我正在尝试从 s3 存储桶读取 csv 数据并在 AWS Athena 中创建一个表 我的表在创建时无法跳过 CSV 文件的标题信息 查询示例 CREATE EXTERNAL TABLE IF NOT EXISTS table name e
  • 相对于绝对定位元素的定位 - 有可能吗?

    我在页面上有一些绝对定位的空间 然后在这个空间中有多个绝对定位的元素 效果很好 每当我需要添加另一个元素时 我不必担心页面流量 我只是使用 x y 平面将其放在我想要的位置 我遇到的问题是 现在我在绝对定位元素之一中有一些动态内容 随着它的
  • 如何为具有默认导出的模块编写类型定义

    我想写一个类型定义storybook router https www npmjs com package storybook router 它不必那么准确 因为这是一个次要的开发工具 即anys 是可以接受的 但我什至似乎无法让它发挥作用
  • 输入类型标签属性的有效顺序

    我知道这是非常基本的问题 希望不是那么重要 但我想知道答案 请不要建议仅参考链接 我们每天都会面对
  • laravel 5.2 - 搜索功能

    我希望在我的网站上进行自定义搜索 这是 MySQL 搜索 选择 从MyDB MyTable WHERE id喜欢 MySearch 或firstname喜欢 MySearch 或lastname喜欢 MySearch 或email喜欢 My
  • 有没有办法将外部函数内联到 EF Linq 查询中?

    假设我有一个这样的函数 var filterValue GetCurrentFilter state 然后是 EF 查询 var result context EntitySet Where x gt x column gt filterV
  • 以富文本形式 Markdown 到剪贴板

    在 Windows 上使用 Python 我尝试获取一个 Markdown 文件并将其作为富文本粘贴到我的剪贴板中 大部分拼图都很简单 将 Markdown 解析为 HTML 没有问题 通过 TKinter 将内容放入剪贴板 是的 但这是我
  • 如何限制长表中 \multicolumn 单元格的大小?

    我在 LaTeX 中有一个非常长的表格 跨越多个页面 并且 就像现在一样 对于页面来说也太宽了 我正在使用 longtable 包 其中每个列的宽度都由p width 命令 问题是 大多数行包含多列调用 因此不遵守前导码p width 命令
  • Oracle:指定对象类型列的默认值

    我有一个带有无参数构造函数的对象类型 但是当我将其指定为该类型的列的默认值时 我收到 ORA 00904 无效标识符错误 Example CREATE OR REPLACE TYPE test t AS OBJECT val NUMBER
  • 将 CTE 应用于递归查询

    我正在尝试应用 CTE 和递归查询 数据库为 MariaDB 10 2 或更高版本 业务规则如下 账户可以是控股账户 也可以是投资组合账户 控股由一定数量的货币组成 持股可以是活跃的也可以是非活跃的 一个投资组合包含零个或多个账户 并且这些
  • OkHTTPClient代理认证如何进行?

    问题 如何向 OkHTTP 添加授权代理 我知道 OkHTTP 的构建者是否支持代理 http square github io okhttp 3 x okhttp 虽然我很难设置一个 Given a Url and a base64 en
  • 加密 (cryptojs) - 解密 (erlang)

    我有一个使用 cryptoJS AES 加密的值 需要使用 Erlang 加密库进行解密 对我来说问题在于能够在 Erlang 中使用解密aes cbc 128 decrypt Key IVec Cipher 我想 我需要知道使用的 IVe
  • 错误“您的推送将发布私人电子邮件地址”

    我对 GitHub 很陌生VCS https en wikipedia org wiki Version control 当我尝试在 GitHub 上共享我的项目时 收到以下错误消息 Can t finish GitHub sharing
  • 使用 jQuery 替换字符

    我正在尝试从键盘上的所有文本框中删除逗号 我想出了下面的脚本 但它不起作用 谁能看到我做错了什么吗 NOTE 请原谅脚本中的 所以不会让我发布它 否则 您可能希望将整个代码块包装在文档就绪函数中 function input text ke
  • 不使用相关性直接在ASM中调用/跳转(x86)

    我正在将一个 C DLL 注入到游戏中 并且想将一个函数挂接到我自己的一些代码上 由于DLL每次都会映射到不同的位置 因此直接跳转和调用会更容易 另外 因为这是一个钩子 所以当我返回该函数时 我不想更改堆栈或寄存器 我声明一个 char 来
  • 是否有任何算法可以使循环赛安排具有每轮独特的组合?

    假设我有 10 个参与者的数组 1 2 3 4 5 6 7 8 9 10 假设一个联赛有10名参赛者 那么每个参赛者将与其他9名参赛者进行9场比赛 因此 每位参赛者将进行9轮单场比赛 例如 第一轮 1 2 3 4 5 6 7 8 9 10
  • 是否有 C++ 位域的可移植替代方案

    在许多情况下 尤其是在低级编程中 数据的二进制布局很重要 例如 硬件 驱动程序操作 网络协议等 在 C 中 我可以使用读 写任意二进制结构char 和按位运算 掩码和移位 但这是乏味且容易出错的 显然 我尝试限制这些操作的范围并将它们封装在
  • 季度的天数?

    我将如何实施dayNumber of quarter 例如 3 月 3 日 第一季度 应返回 62 31 一月 28 二月 3 三月 4 月 29 日 第二季度 应返回 29 到目前为止我的代码 int month getMonth dat
  • NSDateFormatter 无法设置 setTimeZone

    我想知道两个日期之间的差异 包括天 小时 分钟和秒 为此 我使用下面的代码 但它不起作用 void UpdateTableViewCellWithNSTimer NSString gameTime UIView inputView NSDa
  • 如何使用 C# MVC4 调用 $.ajax 中的错误函数?

    我有一个使用 C 的 MVC4 项目 在这个项目中 我的一个控制器有一个由 Ajax 函数调用的方法 HttpPost public string EditPackage int id string newPkgName try do lo