簡體   English   中英

MVC4無法使用AJAX調用控制器方法

[英]MVC4 Unable to call controller method using AJAX

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

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函數,但沒有在控制器中導航到方法。 有人可以幫我那里有什么問題嗎? 謝謝

這不是您應該使用AJAX執行GET請求的方式。 在GET中,必須在url字符串中傳遞參數,因此AJAX中的url參數應類似於:

http://someaddress/GetRights?ROLE_ID=sometexthere

您可以在瀏覽器控制台/調試器中簽入您的要求的位置。 您也可以從瀏覽器手動觸發相同的請求,因為這是正常的GET。

現在想通了。 這真是愚蠢。 我確實評論了以下內容:

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

但是我看不到:(。現在包含了jQuery,一切似乎都是正確的。感謝大家的幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM