Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax post数据发送到控制器时为空_Javascript_Asp.net Mvc_Razor - Fatal编程技术网

Javascript Ajax post数据发送到控制器时为空

Javascript Ajax post数据发送到控制器时为空,javascript,asp.net-mvc,razor,Javascript,Asp.net Mvc,Razor,在我的视图中,我有一个VM将数据从db表吐入datatable。我有一个删除按钮,如果选择了请求列中的按钮,则该数据输入的行将被删除。我的删除按钮正在由对我的控制器函数的Ajax调用处理。。。但是,在调试控制器时,参数似乎包含所有空数据。我是不是遗漏了什么?我也有一个按钮在一个部分表上面这一个(未显示)正在处理相同的方式,这一个有零问题 视图: 虚拟机: 控制器功能: public ActionResult DeleteTerminalCommand(AddTerminalCom

在我的视图中,我有一个VM将数据从db表吐入datatable。我有一个删除按钮,如果选择了请求列中的按钮,则该数据输入的行将被删除。我的删除按钮正在由对我的控制器函数的Ajax调用处理。。。但是,在调试控制器时,参数似乎包含所有空数据。我是不是遗漏了什么?我也有一个按钮在一个部分表上面这一个(未显示)正在处理相同的方式,这一个有零问题

视图:

虚拟机:

控制器功能:

        public ActionResult DeleteTerminalCommand(AddTerminalCommandVM removeCommand)
    {
        TerminalCommand removeTerminalCommand = new TerminalCommand();

        removeTerminalCommand.TerminalID = removeCommand.TerminalID;
        removeTerminalCommand.Command = removeCommand.CommandID;
        removeTerminalCommand.CommandValue = removeCommand.CommandValue;

        TCBL.DeleteTerminalCommand(removeTerminalCommand);

        var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "TerminalCommand");
        return Json(new { Url = redirectUrl });
    }

在您的代码中,td标签没有id,您需要获得td标签的值,如下所示

var data = {
            TerminalID: $(e.target.closest('tr')).find('td').eq(0).text(),
            CommandID: $(e.target.closest('tr')).find('td').eq(1).text(),
            CommandValue: $(e.target.closest('tr')).find('td').eq(2).text()
        };
AJAX调用更改为

 $(function () {
    $("#btnDeleteTerminalCommand").click((e) => {
        e.preventDefault();

        var data = {
            TerminalID: $(e.target.closest('tr')).find('td').eq(0).text(),
            CommandID: $(e.target.closest('tr')).find('td').eq(1).text(),
            CommandValue: $(e.target.closest('tr')).find('td').eq(2).text()
        };
        alert(JSON.stringify(data));
        console.log("data");
        console.log(data);
        $.ajax({
            url: '@Url.Action("DeleteTerminalCommand", "Login")',
            type: "POST",
            data: data,
            success: function (response) {
                console.log("Success");
                window.location.href = response.Url;
            }
        });
    });
});

在您的代码中,td标签没有id,您需要获得td标签的值,如下所示

var data = {
            TerminalID: $(e.target.closest('tr')).find('td').eq(0).text(),
            CommandID: $(e.target.closest('tr')).find('td').eq(1).text(),
            CommandValue: $(e.target.closest('tr')).find('td').eq(2).text()
        };
AJAX调用更改为

 $(function () {
    $("#btnDeleteTerminalCommand").click((e) => {
        e.preventDefault();

        var data = {
            TerminalID: $(e.target.closest('tr')).find('td').eq(0).text(),
            CommandID: $(e.target.closest('tr')).find('td').eq(1).text(),
            CommandValue: $(e.target.closest('tr')).find('td').eq(2).text()
        };
        alert(JSON.stringify(data));
        console.log("data");
        console.log(data);
        $.ajax({
            url: '@Url.Action("DeleteTerminalCommand", "Login")',
            type: "POST",
            data: data,
            success: function (response) {
                console.log("Success");
                window.location.href = response.Url;
            }
        });
    });
});

谢谢,我会试试这个,然后告诉你。但是我的另一个Ajax调用没有这个问题?我复制了它,如果不起作用,您可以添加更多选项contentType:“application/json;charset=utf-8”,数据类型:“json”,数据:json.stringify(data),谢谢,我会尝试一下,并让您知道。但是我的另一个Ajax调用没有这个问题?我复制了它,如果不起作用,您可以添加更多选项contentType:“application/json;charset=utf-8”,数据类型:“json”,数据:json.stringify(data),
 $(function () {
    $("#btnDeleteTerminalCommand").click((e) => {
        e.preventDefault();

        var data = {
            TerminalID: $(e.target.closest('tr')).find('td').eq(0).text(),
            CommandID: $(e.target.closest('tr')).find('td').eq(1).text(),
            CommandValue: $(e.target.closest('tr')).find('td').eq(2).text()
        };
        alert(JSON.stringify(data));
        console.log("data");
        console.log(data);
        $.ajax({
            url: '@Url.Action("DeleteTerminalCommand", "Login")',
            type: "POST",
            data: data,
            success: function (response) {
                console.log("Success");
                window.location.href = response.Url;
            }
        });
    });
});