MVC4无法使用AJAX调用控制器方法

时间:2015-12-30 10:27:53

标签: javascript c# ajax asp.net-mvc-4

我的控制器中有以下方法:

public JsonResult GetRights(string ROLE_ID)
        {
            var result = db.APP_RIGHTS_TO_ROLES.Where(r => r.FK_ROLE_ID.ToString() == ROLE_ID).Select(r => r.APP_RIGHTS).ToList();
            return Json(result, JsonRequestBehavior.AllowGet);
        }

这就是我创建下拉列表的方式

@Html.DropDownList("ddlRoles", new SelectList(ViewBag.Roles, "ROLE_ID", "ROLE_NAME"),"--Select role--", new { onchange = "GetRights(this.value);" })

最后是一个用于下拉项目更改的JavaScript代码段

<script type="text/javascript">
        function GetRights(role_id) {
            $.ajax({
                type: "GET",
                url: '@Url.Action("GetRights")',
                dataType: "json",
                data: { "ROLE_ID" : role_id.toString() }, 
                success: successFunc,
                error: errorFunc
            })
        }

        function successFunc (data) {
            alert("success");
            if (data != null) {
                var vData = data;
            }
        }

        function errorFunc() {
            alert("error");
        };
    </script>

我可以看到在更改所选项目时正在调用javascript函数,但我没有导航到控制器中的方法。有人可以帮助我吗? 感谢

2 个答案:

答案 0 :(得分:0)

这不是您应该使用AJAX执行GET请求的方式。在GET中,参数必须在url字符串中传递,因此AJAX中的url参数应如下所示:

http://someaddress/GetRights?ROLE_ID=sometexthere

您可以在浏览器控制台/调试器中检查您在哪里触发请求。您也可以从浏览器手动触发相同的请求,因为这是正常的GET。

答案 1 :(得分:0)

现在想出来。这完全是我的愚蠢。我确实注释了以下内容:

@Scripts.Render("~/bundles/jqueryval")

但我无法看到:(。现在包括jquery,一切似乎都是正确的。 感谢大家的帮助