猿问

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

在我的代码中,我需要接收一个字符串,将其转换为 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");



牛魔王的故事
浏览 217回答 1
1回答

慕运维8079593

使用您共享的代码,如果您在定义变量之前尝试使用该变量,您将收到 响应未定义错误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;         }})
随时随地看视频慕课网APP
我要回答