jquery - 无法使用 ajax 和 asp.net core 发送数组

标签 jquery asp.net arrays ajax asp.net-core

我写了这个ajax函数:

$(function () {
        $("#showReport").click(function () {
            var data = [];
            for (var i = 0; i <@Model.LiFilters.Count;i++) {
                data[i] = $("#filter" + i).val();
                $("#myDiv").html("Hello!");
            }

            alert('{filters:' + JSON.stringify(data) + '}');
            $("#myDiv").remove();
            $.ajax({
                type: "POST",
                url: '@Url.Action("ShowReport", "Report")',
                traditional: true,
                //data: '{filters:' + JSON.stringify(data) + '}',
                data: { filters : data },
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    alert(data);
                    alert(response[0]);
                    $("#myDiv").html(response[0]);
                    alert(response);
                },
                failure: function (response) {
                    alert(response.responseText);
                },
                error: function (response) {
                    alert(response.responseText);
                }
            });
            return false;
        });
    });

并在报告 Controller 中执行此操作:

 [HttpPost]
public JsonResult ShowReport(string[] filters)
{
    C_AminReport aminReport = null;
    string sErr = string.Empty;
    //C_ReportParams aminParams = null;
    //C_AminReport aminReport;
    string sReport = "Empty Report!";
    if (C_AminReport.U_GetReport(aminReport.ID, out aminReport))
    {
        int iConIndex = Get_ServiceIndex();
        aminReport.U_RenderReport(iConIndex, ref sErr);
        aminReport.U_GetReportFromAmin(iConIndex, aminReport, out sReport, ref sErr);
    }
    string[] asReport;
    JsonBuilder.U_TryReadJson(sReport, out asReport);
    return Json(asReport);
}

但是当运行代码时,我看到数据数组已填充,但在 ShowReport 操作内部,fillters 数组是一个空数组并且未填充! 我还在操作参数中尝试了 [FromBody] 标签,但它不起作用! 有什么问题吗?

最佳答案

我测试了您的 JavaScript,它正在尝试发送查询字符串中的所有数据。

您必须使用JSON.stringify。其中之一应该有效:

data: '{filters:' + JSON.stringify(data) + '}'

data: JSON.stringify(data)

我怀疑第二个会起作用。

您可能仍然需要[FromBody]

关于jquery - 无法使用 ajax 和 asp.net core 发送数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48523116/

相关文章:

asp.net - 使用 CSS 在 IE6 中滚动 DIV

php - Laravel - 在 View 中显示存储在数据库的一行中的数组图像

c - 在函数中初始化数组

javascript - jquery animate 即使条件不满足也执行

.net - 如何删除当前 DataItem 与 A​​SP.NET Repeater 的绑定(bind)?

javascript - 添加/删除所有文本框 ID 增量

c# - 在处理响应后使用 Amazon S3 响应流

php - 如何从玩家手中移除重复的扑克牌?

javascript - 如何获取网站中html元素的css、javascript

javascript - 组合过滤器+同位素快速搜索