简体   繁体   English

jQuery ajax 在 ASP .NET MVC 中将 null 传递给 controller

[英]jQuery ajax passing null to controller in ASP .NET MVC

I am trying to send stringified array from view with $.ajax but I am constantly getting null in controller. This is controller function:我正在尝试使用 $.ajax 从视图发送字符串化数组,但我不断在 controller 中获取 null。这是 controller function:

[HttpPost]
        public void SaveColumnsToDb(string data)
        {
            var a = data;

        }

Console outputs:控制台输出:

str:  (2) ['SerialNumber', 'MeasurementUnit']
JSON str:  ["SerialNumber","MeasurementUnit"]

Whole function:整function:

$("#popup-saveBtn").click(function () {
            var columns = [];
            var parentElement = document.getElementById("tableColumns");
            var childElements = parentElement.querySelectorAll("input[type=checkbox]");

            // If checkbox is checked, push value to array
            for (i = 0; i < childElements.length; i++) {
                if (childElements[i].checked) {
                    columns.push(childElements[i].value);
                }
            }
            /*var strColumns = columns.join(";");*/

            console.log("str: ", columns);
            console.log("JSON str: ", JSON.stringify(columns));

            // Send data to AjaxSelectController
            $.ajax({
                url: '@Url.Action("SaveColumnsToDb", "AjaxSelect", new { area = string.Empty })',
                type: 'POST',
                data: JSON.stringify(columns),
                dataType: 'json',
                contentType: 'application/json; charset=utf-8'
            });
        });

as a matter of fact, since you are using contentType: 'application/json;事实上,因为您使用的是 contentType: 'application/json; charset=utf-8', you are trying to send a json inside of the request body, so use this syntax charset=utf-8',您正尝试在请求正文中发送 json,因此请使用此语法

[HttpPost]
public void SaveColumnsToDb([FromBody] string[] data)

Changed the parameter name.更改了参数名称。 When we use an ajax request then we have to pass value in data and In the URL part, we have to give only the action name and controller name.当我们使用 ajax 请求时,我们必须在数据中传递值,在 URL 部分,我们只需要提供操作名称和 controller 名称。

[HttpPost]
public void SaveColumnsToDb(string dataResponse)
{
        var a = dataResponse;
}


$("#popup-saveBtn").click(function () {
    var columns = [];
    var parentElement = document.getElementById("tableColumns");
    var childElements = parentElement.querySelectorAll("input[type=checkbox]");

    // If checkbox is checked, push value to array
    for (i = 0; i < childElements.length; i++) {
        if (childElements[i].checked) {
            columns.push(childElements[i].value);
        }
    }
    /*var strColumns = columns.join(";");*/

    console.log("str: ", columns);
    console.log("JSON str: ", JSON.stringify(columns));

    // Send data to AjaxSelectController
    $.ajax({
        url: '@Url.Action("SaveColumnsToDb", "AjaxSelect")',
        type: 'POST',
        data: { dataResponse: JSON.stringify(columns)},
        dataType: 'json',
        contentType: 'application/json; charset=utf-8'
    });
});

I managed to make it work.我设法使它工作。

Changed data property in $.ajax().更改了 $.ajax() 中的数据属性。

data: JSON.stringify({ data: strColumns })

I am sending only csv string, eg "abc;abc;abc" Controller is same.我只发送 csv 字符串,例如“abc;abc;abc”Controller 是相同的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Ajax 传递空值但控制器在 ASP.NET MVC 中为空 - Ajax passing empty value but Controller get null in ASP.NET MVC Jquery和Asp.Net MVC通过Jquery Ajax调用将Obejct传递给控制器 - Jquery and Asp.Net MVC passing Obejct to Controller through Jquery Ajax call ASP.NET MVC AJAX将参数传递给控制器 - ASP.NET MVC AJAX passing Parameters to Controller ASP.NET MVC使用Ajax将整个模型传递给控制器 - ASP.NET MVC passing whole model to controller using ajax Ajax 发布到 ASP.net MVC 控制器 - 对象属性为空 - Ajax post to ASP.net MVC controller - object properties are null 使用Jquery Ajax将布尔参数传递给.NET Core2 MVC控制器 - Passing a bool parameter to .NET Core2 MVC Controller with Jquery Ajax 如何使用AJAX JQuery ASP .NET MVC 4将FormCollection和文件传递给控制器 - How to pass a FormCollection and file to controller with AJAX JQuery ASP .NET MVC 4 使用jQuery AJAX将多个变量POST到ASP .NET MVC控制器 - Using jQuery AJAX to POST multiple variables to an ASP .NET MVC Controller html.beginForm为列表发布空值 <strongly typed> 通过ASP&gt; NET-MVC5中的jQuery Ajax函数连接到控制器 - html.beginForm post null value for List<strongly typed> to controller via jQuery Ajax function in ASP>NET-MVC5 将图像传递到控制器ASP.NET MVC - Passing Image to Controller ASP.NET MVC
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM