Javascript发布数组显示语法错误

时间:2015-11-10 17:46:46

标签: javascript ajax asp.net-mvc

我的行动结果如下

[HttpPost]
public ActionResult AddRoomFeature(string[] selectedFeatures, int RoomID)
{
    return View();
}

Javascript Ajax

var selectedFeatures = [];

$('input.Hotelfeature:checkbox:checked').each(function () {
    selectedFeatures.push($(this).val());
});

$.ajax({
    type: 'POST',
    url: '@Url.Action("AddRoomFeature", "HotelRoom")',
    data: {
        selectedFeatures: JSON.stringify(selectedFeatures),
        RoomID: $("#RoomID").val()
    },
    success: function (data) {
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("error");
    }
});

问题:

如果我将selectedFeatures发布到actionresult,

selectedFeatures 将值显示为 [" \ 1",\" 2 \"]

通常,值应在字符串数组中显示为" 1"," 2"

我错过了ajax代码?

任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

SelectedFeatures作为单个字符串值收到,因为您在发送ajax请求之前在实际数组上使用JSON.stringify。当您进行jQuery ajax请求时,您可以使用纯JavaScript对象指定要发送到服务器的数据。不需要手动序列化。数据将转换为查询字符串或请求正文。默认内容类型为application/form-url-encoded

因此,要使用您的代码应该成为:

var selectedFeatures = [];

$('input.Hotelfeature:checkbox:checked').each(function () {
    selectedFeatures.push($(this).val());
});

$.ajax({
    type: 'POST',
    url: '@Url.Action("AddRoomFeature", "HotelRoom")',
    data: {
        selectedFeatures: selectedFeatures, // Note the missing JSON.stringify
        RoomID: $("#RoomID").val()
    },
    success: function (data) {
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("error");
    }
});