尝试使用 Ajax 调用控制器方法 MVC 获取数据 我的代码已附加

Posted

技术标签:

【中文标题】尝试使用 Ajax 调用控制器方法 MVC 获取数据 我的代码已附加【英文标题】:Trying to Get Data using Ajax call to Controller method MVC My code Attached 【发布时间】:2019-04-30 08:20:20 【问题描述】:

我在下拉值更改时调用 jquery 函数 jquery 方法是,

function MyFunction() 
    alert($('#DDlSurvey').val());
    $.ajax(
        url: "@Url.Action("GetSelectedQuestion", "ConductSurveyController")",
        data:  prefix: $('#DDlSurvey').val() ,
    type: "GET",
    dataType: "json",
    success: function (data) 
        //  loadData(data);
        alert(data)
        alert("Success");
    ,
    error: function () 
        alert("Failed! Please try again.");
    
);
  //$('#YourLabelId').val('ReplaceWithThisValue');

</script>

我正在调用的函数,我收到下拉值警报

现在,我调用的函数是控制器“ConductSurveyController”中的“GetSelectedQuestion

方法是这样的,

[HttpPost]
public JsonResult GetSelectedQuestion(int prefix)

    List<SelectList> Questions=new List<SelectList>();

   //  Here "MyDatabaseEntities " is dbContext, which is created at time of model creation.
    SurveyAppEntities ObjectSur = new SurveyAppEntities();
       // Questions = ObjectSur.Surveys.Where(a => a.ID.Equals(prefix)).toToList();

我不认为这个方法正在调用,因为我收到错误

Failed! Please try again

来自我的脚本。

希望你的建议

谢谢

 var e = from q in ObjectSur.Questions
         join b in ObjectSur.SurveyQuestions on q.ID equals b.QuestionID where b.SurveyID.Equals(prefix)
         select q ;
         return new JsonResult  Data = e, JsonRequestBehavior = JsonRequestBehavior.AllowGet ;

【问题讨论】:

该请求返回的 http 状态码是什么? 在 Chrome 开发者工具中检查网络标签。 【参考方案1】:

我认为您直接使用控制器名称。你的 ajax 代码是这样的。

var PostData=  prefix: $('#DDlSurvey').val() 
var ajaxOptions = 
        type: "GET",
        url: '@Url.Action("GetSelectedQuestion", "ConductSurvey")',//Actionname, ControllerName
        data: PostData,
        dataType: "json",
        success: function (result) 
            console.log(result);
        ,
        error: function (result) 

        
;
$.ajax(ajaxOptions);

【讨论】:

真正的人,我刚刚完成了与您发布的相同更改,谢谢 对不起,我误解了问题和你说的一样,但是我在控制器中尝试了简单的方法,而不是我在帖子中提到的一种方法,在进行相同的更改后仍然得到相同的错误,也许 linq 或给定的方法有错误?我如何检查 linq 删除所有代码,只从你的 MVC 控制器返回简单的字符串消息【参考方案2】:

您在控制器中的方法用HttpPost 装饰,而在您的ajax 中,您已指定请求的类型为get。你可以改变你的方法得到这样的:

[HttpGet]
public JsonResult GetSelectedQuestion(int prefix)


或者更改您的请求类型以在您的 Ajax 调用中发布:

$.ajax(
    url: "@Url.Action("GetSelectedQuestion", "ConductSurveyController")",
    data:  prefix: $('#DDlSurvey').val() ,
    type: "Post",

另外ControllerConductSurveyController 中是多余的,您需要将其删除并简单地将其称为ConductSurvey

url: '@Url.Action("GetSelectedQuestion", "ConductSurvey")',

【讨论】:

以上是关于尝试使用 Ajax 调用控制器方法 MVC 获取数据 我的代码已附加的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ajax 调用 MVC4 传递两个字符串数组

从控制器获取结果,但在 MVC5 和 C# 中,ajax 调用获取错误而不是成功

未使用 MVC 从 Json Result 获取 Ajax 成功方法中的 LINQ 连接查询结果,但结果显示正确

MVC ajax json 发布到控制器操作方法

jQuery 通过 Ajax 在 ASP.NET MVC C# 中调用 Action 方法

jQuery 将 Ajax 调用中的数据传递给 MVC 操作方法