2

这是我为生成数组而创建的 acript:

var data_points = $("#bcc_datapoint_selection").find("input:checked").map(function () {
    return $(this).val();
}).get();

控制台日志输出:

["3","4","6"]

Ajax 发布脚本:

$.ajax({
    url: '@Url.Action("BccGetMeterReadingsChart", "Widget")',
    type: 'POST',
    data: { dataPoints: data_points },
    success: function (result) {
        $("#bcc_chart").html(result);
    },
    error: function () {
         alert("Seçilen kritere uygun veri bulunamadı!");
    }
}); //end ajax

控制器方法:

public ActionResult BccGetMeterReadingsChart(string[] dataPoints)
{
    // Some code
    return Json("", JsonRequestBehavior.AllowGet);
}

调试输出:

dataPoints : null

请求数据输出:

dataPoints%5b%5d=3&dataPoints%5b%5d=4&dataPoints%5b%5d=6

我错过了什么?这是 Ajax 函数中的问题吗?还是其他问题?

4

1 回答 1

3

尝试traditional为您的 AJAX 请求将参数设置为 true:

$.ajax({
    url: '@Url.Action("BccGetMeterReadingsChart", "Widget")',
    type: 'POST',
    data: { dataPoints: data_points },
    traditional: true,
    success: function (result) {
        $("#bcc_chart").html(result);
    },
    error: function () {
         alert("Seçilen kritere uygun veri bulunamadı!");
    }
});

现在 POST 有效负载将如下所示:

dataPoints=3&dataPoints=4&dataPoints=6

模型绑定器会愉快地将点集合绑定到您的操作参数。

于 2013-02-07T07:12:21.773 回答