繁体   English   中英

将js中的json传递给控制器

[英]Pass json from js to controller

数据不传递给控制器​​,始终为null

我的脚本视图:

function deleteRecords() {
    var selected = [];
    $('#myTable input:checked').each(function () {
        selected.push($(this).attr('id'));
    });

    $.ajax({
        url: '/Home/DeleteRecords',
        type: 'POST',
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        data: { "json": JSON.stringify(selected) },
        error: function () {
            alert("Error!");
        }
    });
}

我的家庭控制器方法:

[HttpPost]
public IActionResult DeleteRecords(string AllId)
{
    return null;
}

发送ajax请求数据,如下所示,

$.ajax({
    url: '/Home/DeleteRecords',
    type: 'POST',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(selected),
    error: function () {
        alert("Error!");
    }
});

并接收实际的数据

[HttpPost]
public IActionResult DeleteRecords(string[] AllId)
{
    return null;
}

它需要通过动作。 希望对您有帮助。

在Post中将您的属性命名为与您的方法相同的名称,以便自动绑定将其选中。 -事实证明,这对于单个对象无关紧要。

.net无法解析您正在创建的数据对象,请将JSON.stringify直接用于数据有效负载。

注意:由于要传递字符串数组,因此Home控制器中的更改。

function deleteRecords() {
var selected = [];
$('#myTable input:checked').each(function () {
    selected.push($(this).attr('id'));
});

$.ajax({
    url: '/Home/DeleteRecords',
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify(selected),
    error: function () {
        alert("Error!");
    }
});

}

对于家庭控制器方法:

[HttpPost]
public IActionResult DeleteRecords(string[] AllId)
{
    return null;
}

加上您问题中的代码,请尝试以下操作以获取json

System.Web.Context.Current.Request.Form["json"]

如果您需要更多优美的东西,则需要在参数签名中放入FromBody属性

DeleteResults([FromBody] string json)

暂无
暂无

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM