Ajax没有击中控制器方法

时间:2018-05-22 11:48:30

标签: c# ajax asp.net-mvc

我有以下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代码确实具有正确的字符串值。

3 个答案:

答案 0 :(得分:0)

这些评论为您提供了一些建议,这些建议在放在一起时会为您提供所需的行为。

首先,您可以使用@Url.Action

在视图中构建网址
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);
    }
});

答案 1 :(得分:0)

从参数名称中移除逗号" 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 :(得分:0)

将网址更改为:

url: "../Client/ShowClient"