2

配列を生成するために作成したスクリプトを次に示します。

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

traditionalAJAX リクエストのパラメーターを 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 に答える