我的行动结果如下
[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代码?
任何帮助将不胜感激。
感谢。
答案 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");
}
});