我有一个MVC Action接受一个值列表,如下所示:
[HttpGet]
public JsonResult Events(string[] vals)
{
var events = _lcmEventsRepository.FindAllByEventTypeId(vals[0]);
return Json(events);
}
如何从javascript向此Action发送一些值?
我正在使用以下代码,但服务器端收到的值格式不正确:
var eventtypes = ['1', '2'];
$.ajax({
url: shouldRepopulateFromAction,
//data: { vals: JSON.stringify(selectedValues) },
data: { vals: JSON.stringify(eventtypes) },
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(data);
},
error: function (data) {
alert('error!');
}
});
vals参数有一个成员,其值为
["1","2"]
答案 0 :(得分:1)
如果设置'traditional:true',那么您正在尝试使用JSON.stringify()来序列化数组。这样做是发送这样的数组:
/Events?vals=1&vals=2
如果你没有设置'traditional:true',那么数组将像这样发送:
/Events?vals%5B%5D=1&vals%5B%5D=2
所以解决方案就是:
var eventtypes = ['1', '2'];
$.ajax({
url: shouldRepopulateFromAction,
data: { vals: eventtypes },
type: 'GET',
contentType: "application/json; charset=utf-8",
dataType: "json",
traditional: true,
success: function (data) {
alert(data);
},
error: function (data) {
alert('error!');
}
});
将数组发送到服务器时应考虑使用POST。