AJAX只将数组的最后一个元素传递给MVC 5控制器

时间:2015-02-18 09:51:06

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-5

我正在尝试通过AJAX向我的MVC控制器发送两个整数数组。 这是我的JavaScript代码:

    var condDeviceIDs = [];
    var resDeviceIDs = [];

    $("#selectDvcForCond").on('click', function () {
        var deviceID = $('#dvc-cond').val();
        condDeviceIDs.push(deviceID);
    });

    $("#selectDvcForRes").on('click', function () {
        var deviceID = $('#dvc-res').val();
        resDeviceIDs.push(deviceID);
    });

    $("#AddScenarioButton").on('click', function () {
        $.ajax({
            type: 'POST',
            url: "@Url.Action("AddScenario", "Device")",
            traditional: true,
            data: { 'conditionIDs': condDeviceIDs, 'resultIDs': resDeviceIDs },
        }
        );
    });

这是我的行动:

public ActionResult AddScenario(int[] conditionIDs,int[] resultIDs)

问题是axaj只将数组的最后一个元素传递给控制器​​。我用firebug检查了我的JS代码,这是正确的。 例如'condDeviceIDs'包含[17,4,6​​],但是当ajax将它发送到控制器时,“conditionIDs”只包含[6]。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下代码

postData = { 'conditionIDs': condDeviceIDs, 'resultIDs': resDeviceIDs };

$.ajax({
    type: 'POST',
    contentType: "application/json;charset=utf-8",
    url: "@Url.Action("AddScenario", "Device")",
    dataType: 'json',
    data: JSON.stringify(postData),
    success: function (result) {
       console.log(result)
    },
    failure: function (result) {
       console.log(result)
    }
});

控制器

public ActionResult AddScenario(YourViewModel model)
{

}

创建ViewModel

public class YourViewModel
{
public int[] conditionIDs{ get; set; }
public int[] resultIDs{ get; set; }    
}