gpt4 book ai didi

jQuery AJAX 不发送数据

转载 作者:行者123 更新时间:2023-12-01 04:36:44 26 4
gpt4 key购买 nike

这是我的 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);
}
});
});

这是我的简单 Controller :

[HttpPost]
public ActionResult FilterRinglet(List<string> months)
{
return Json(new { x = "sdg", received = "ok" });
}

但是 Chrome DevTools 仅显示 500 - 内部服务器错误。

我想向该 Controller 发送三个字符串数组(在示例中您只能看到发送一个字符串的尝试)。

我尝试了这个( How can I post an array of string to ASP.NET MVC Controller without a form? )以及其他答案。我无法让它工作,你能告诉我我的错误隐藏在哪里吗?

编辑:我还尝试了以下代码行

var months = JSON.stringify({ months: selectedMonths });

selectedMonths 看起来像这样

enter image description here

这不会导致 500,但在 Controller 中它看起来像这样:

enter image description here

编辑2:我也尝试过这个:

        $.post('/Shop/FilterRinglet', { 'months[]': selectedMonths }, function (response) {
alert(response);
});

但除了""之外,没有任何东西到达 Controller 。

编辑3:

我变了

[HttpPost]
public ActionResult FilterRinglet(List<string> months)

[HttpPost]
public ActionResult FilterRinglet(string[] months)

但仍然没有成功。

编辑4:

我还创建了一个类

public class RingletData
{
public List<string> months { get; set; }
}

并相应地更改了方法。月仍然是""

最佳答案

因此,经过数小时的研究并结合不同的方法,我想出了以下解决方案:

// old line, needs to be changed: var months = { months: selectedMonths };
// new line, already contains the other arrays:
var data = JSON.stringify({ months: selectedMonths, locations: selectedLocations, events: selectedEvents });

$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
type: 'POST',
url: '/Shop/FilterRinglet',
data: data,
traditional: true,
success: function (result) {
alert("success");
},
failure: function (response) {
alert(response);
}
});

Controller :

    [HttpPost]
public ActionResult FilterRinglet(RingletData data)
{
...
}

重要的是,如果您使用 JSON.stringify(...),不要忘记 contentType: "application/json"。这是我的错误,因为在我不同的尝试和错误中,我忘记使用它 - 但我不知道在使用 JSON.stringify(...)

时有必要使用它

您还应该创建一个对象,例如我的例子中的RingletData:

public class RingletData
{
public string[] months { get; set; }
public string[] locations { get; set; }
public string[] events { get; set; }
}

然后可以使用 data.months 访问您发送的数据。

关于jQuery AJAX 不发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50797572/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com