mvc视图中的Ajax无法正常工作

时间:2017-01-26 14:34:27

标签: jquery ajax asp.net-mvc

我不知道为什么我的代码不起作用。我只是想对我的一个控制器进行简单的调用,并获得一个json结果。

我视图中的脚本如下所示:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
        $(document).ready(function () {
            var serviceURL = '/WorkRolesController/checkNumRoles';

            $.ajax({
                type: "POST",
                url: '@Url.Action("checkNumRoles", "WorkRolesController")',
                dataType: "json",
                success: successFunc,
                error: errorFunc
            });

            function successFunc(data, status) {
                alert(data);
            }

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

以下是控制器中(简化的)动作方法的外观:

[HttpPost]
    public ActionResult checkNumRoles()
    {

        return Json("skat", JsonRequestBehavior.AllowGet);
    }

每次加载页面时,我都会收到包含字符串'error'的警告。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

Controller中提供控制器名称时,您不需要包含Url.Action后缀。试试这个:

url: '@Url.Action("checkNumRoles", "WorkRoles")',

另请注意JsonRequestBehavior.AllowGet是多余的,因为它只是一个POST请求以下是一个完整的示例:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            type: "POST",
            url: '@Url.Action("checkNumRoles", "WorkRoles")',
            dataType: "json",
            success: function(data, status) {
                alert(data);
            },
            error: function() {
                alert('error');
            }
        });
    });
</script>
[HttpPost]
public ActionResult checkNumRoles()
{
    return Json("skat");
}