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

在 JavaScript 中接收 C# 枚举并通过 Ajax 将其传递给模型

在 JavaScript 中接收 C# 枚举并通过 Ajax 将其传递给模型

C#
牛魔王的故事 2021-11-28 17:54:19
在我的代码中,我需要接收一个字符串,将其转换为 C# 枚举,然后将该枚举传递给我的模型。代码位于 for 循环(未显示)中。 var thisDwm = document.getElementById("dwm_" + i).value;                   var urlDwm = "/KnowledgeTransfer/GetDailyWeeklyMonthlyEnum";            var response            $.ajax({                type: 'GET',                url: urlDwm,                data: { 'caseFromJS': thisDwm },                contentType: 'application/json',                success: function (thisResponse) {                    response = thisResponse;                }            })            model.MainResponsibilities[i].DailyWeeklyMonthly = response;目前,ajax 命中我的 C# 控制器并返回正确的枚举。但是当我查看 JavaScript 断点时,“响应”仍未定义且未设置。如何设置对我可以传递给模型的 C# 枚举对象的响应?是否需要进行一些解析?似乎我根本没有从控制器收到任何东西。没有帮助的一件事是类型、数据、内容类型、成功和 thisResponse 在 Chrome 中都显示为“未定义引用错误”。然而 Ajax 仍然有效,至少在其他地方,即使这些其他方法也显示此错误。谢谢您的帮助。编辑:下面是我的控制器方法:public ObjectModel.Enums.DailyWeeklyMonthly GetDailyWeeklyMonthlyEnum(string caseFromJS)        {            switch (caseFromJS){                case "Daily":                    return ObjectModel.Enums.DailyWeeklyMonthly.Daily;                case "Weekly":                   return ObjectModel.Enums.DailyWeeklyMonthly.Weekly;                case "Monthly":                   return ObjectModel.Enums.DailyWeeklyMonthly.Monthly;                case "Yearly":                    return ObjectModel.Enums.DailyWeeklyMonthly.Yearly;                default:                    throw new Exception("problem with dailyWeeklyMonthly in KnowledgeTransferController");
查看完整描述

1 回答

?
慕运维8079593

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

使用您共享的代码,如果您在定义变量之前尝试使用该变量,您将收到 响应未定义错误response。在您共享的代码片段中,您仅在success ajax 调用的回调方法中对其进行初始化。


请记住,ajax 是异步的。当 JavaScript 框架执行此行时model.MainResponsibilities[i].DailyWeeklyMonthly = response;,该行超出了成功回调范围,ajax 调用可能仍在执行/等待来自服务器的响应,这意味着没有设置任何内容response,这意味着变量response未初始化!


仅在success或done回调中访问对 ajax 调用的响应。


$.ajax({

         type: 'GET',

         url: urlDwm,

         data: { 'caseFromJS': thisDwm },

         contentType: 'application/json',

         success: function (thisResponse) {

              // safe to use thisResponse in this callback method scope

              console.log(thisResponse);


              // Assuming model.MainResponsibilities[i] exist

              model.MainResponsibilities[i].DailyWeeklyMonthly = thisResponse;

         }

})


查看完整回答
反对 回复 2021-11-28
  • 1 回答
  • 0 关注
  • 216 浏览

添加回答

举报

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