【发布时间】:2018-06-11 12:18:28
【问题描述】:
这是我的 jQuery / JS 代码:
var selectedMonths = [];
var selectedLocations = [];
var selectedEvents = [];
$("#filter").click(function ()
{
$('#months li').each(function ()
{
if ($(this).find('input[type=checkbox]').is(':checked'))
{
selectedMonths.push($(this).find('a').attr('data-value'));
}
});
$('#locations li').each(function () {
if ($(this).find('input[type=checkbox]').is(':checked')) {
selectedLocations.push($(this).find('a').attr('data-value'));
}
});
$('#events li').each(function () {
if ($(this).find('input[type=checkbox]').is(':checked')) {
selectedEvents.push($(this).find('a').attr('data-value'));
}
});
var months = { months: selectedMonths };
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/Shop/FilterRinglet',
data: months,
traditional: true,
success: function (result) {
alert("success");
},
failure: function (response) {
alert(response);
}
});
});
这是我的简单控制器:
[HttpPost]
public ActionResult FilterRinglet(List<string> months)
{
return Json(new { x = "sdg", received = "ok" });
}
但 Chrome DevTools 只显示 500 - Internal Server Error。
我想向该控制器发送三个字符串数组(例如,您只看到发送一个的尝试)。
我试过这个(How can I post an array of string to ASP.NET MVC Controller without a form?),可能还有其他答案。我不能让它工作,你能告诉我我的错误隐藏在哪里吗?
编辑: 我还尝试了以下代码行
var months = JSON.stringify({ months: selectedMonths });
selectedMonths 看起来像这样
这不会导致 500,但在控制器中它看起来像这样:
编辑2: 我也试过这个:
$.post('/Shop/FilterRinglet', { 'months[]': selectedMonths }, function (response) {
alert(response);
});
但是除了"" 之外什么都没有到达控制器。
编辑3:
我变了
[HttpPost]
public ActionResult FilterRinglet(List<string> months)
到
[HttpPost]
public ActionResult FilterRinglet(string[] months)
但还是没有成功。
编辑4:
我还创建了一个类
public class RingletData
{
public List<string> months { get; set; }
}
并相应地更改了方法。月仍然是""。
【问题讨论】:
标签: jquery asp.net-ajax