【问题标题】:Ajax not hitting controller methodAjax 没有命中控制器方法
【发布时间】:2018-05-22 11:48:30
【问题描述】:

我有以下将数据发送到控制器的 jquery 函数:

function bound(e) {
    var ele = document.getElementsByClassName("e-grid")[0]
    ele.addEventListener('click', function (e) {
        if (e.target.classList.contains('e-up')) {
            var grid = document.getElementById('FlatGrid').ej2_instances[0];  //Grid Instance 
            var rowObj = grid.getRowObjectFromUID(ej.base.closest(e.target, '.e-row').getAttribute('data-uid'));
            var  data = rowObj.data;
            //alert(JSON.stringify(data));
            var code = data.ClientCode;
            $.ajax({
                type: "POST",
                url: "/Client/ShowClient",
                data: { "ClientCode": code }, //First item has latest ID
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data.length !== 0) {
                        console.log(data);
                    }
                },
                error: function (data) {
                    console.log(data);
                }
            });
        }

    });
}

还有我的控制器方法:

[HttpPost]
    public ActionResult ShowClient(string ClientCode)
    {
        if (ClientCode == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        *action*
    }

但是,我收到了 500(内部服务器错误)错误。知道我缺少什么,因为我的方法根本没有受到影响。 而且我可以看到 var 代码确实具有正确的字符串值。

【问题讨论】:

  • 去掉contentType: "application/json; charset=utf-8",选项
  • 你可以试试直接像数据一样传递代码值吗:JSON.stringify(code)
  • 您能否提供有关 500(内部服务器错误)的更多信息?
  • 您是否尝试过在客户端调试您的应用程序?打开你的开发者工具,在网络标签中查看 500 错误的内容。
  • 尝试用'@Url.Action("ShowClient", "ControllerName")'替换你的url参数。使用您的控制器名称。

标签: c# ajax asp.net-mvc


【解决方案1】:

从参数名称“ClientCode”和 contentType 中删除逗号并且将起作用

        $.ajax({
            type: "POST",
            url: "/Client/ShowClient",
            data: { ClientCode: code }, //First item has latest ID
            success: function (data) {
                if (data.length !== 0) {
                    console.log(data);
                }
            },
            error: function (data) {
                console.log(data);
            }
        });

【讨论】:

    【解决方案2】:

    cmets 为您提供了一系列建议,这些建议组合起来将为您提供所需的行为。

    首先,您可以使用@Url.Action 在视图中构建 URL

    url: '@(Url.Action("ShowClient","Client"))',
    

    接下来,对象模型没有正确构建

    data: { ClientCode: code },
    

    注意键周围的最后一个引号。

    最后移除 JSON 内容类型。

    这会导致部分代码。

    $.ajax({
        type: "POST",
        url: '@(Url.Action("ShowClient","Client"))',
        data: { ClientCode: code },
        success: function (data) {
            if (data.length !== 0) {
                console.log(data);
            }
        },
        error: function (data) {
            console.log(data);
        }
    });
    

    【讨论】:

      【解决方案3】:

      把网址改成这样:

      url: "../Client/ShowClient"
      

      【讨论】:

        猜你喜欢
        • 2018-09-13
        • 1970-01-01
        • 2019-09-05
        • 2012-12-30
        • 2019-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多