gpt4 book ai didi

javascript - 使用 ajax 将数据字符串传递给 Controller ​​方法

转载 作者:行者123 更新时间:2023-11-30 05:45:32 25 4
gpt4 key购买 nike

我正在创建一个过滤器列表。我有几个多选列表,用户可以在其中选择多个选项。问题是我正在使用 ajax 返回值并调用一个 Controller 方法,该方法将返回一个 Json 数据,然后该数据将显示在网站上。但问题是它不起作用。

Controller 方法:

[HttpPost]
public ActionResult FilterData(string a, string b, string c, string d){
//Do Something with the strings e.g. filter the data.
return Json(result, JsonRequestBehavior.AllowGet);
}

获取过滤数据的Ajax方法:

$(document).ready(function() {
$("#submitBTN").click(function() {
var ab = $('#selectedID1').val();
var bc = $('#selectedID2').val();
var cd = $('#selectedID3').val();
var de = $('#selectedID4').val();

$.ajax({
contentType: "application/json; charset=utf-8",
url:"/Controller/FilterData",
type: "POST",
data: JSON.stringify({a: ab, b: bc, c: cd, d:de }),
success: function(result){

}
error: function(){}
});
return false;
});
});

使用 Firebug 我可以看到发布了正确的值。而且我知道,如果我通过 url 链接手动选择字符串 a,它会得到正确的过滤数据。然而,这些数据似乎没有进入方法并输出所有数据而不使用帖子值进行过滤。

问题是发布的数据没有被收集或发送到方法 FilterData,因此如果没有选择过滤器选项,它应该返回所有数据。我想知道如何修复代码,以便我可以获取 ajax 发布的数据以将该数据发送到方法 FilterData 参数,例如字符串 a、字符串 b、字符串 c 和字符串 d。

最佳答案

更新:现在当您重述问题时,这里是有问题的行(您在数据值上使用 JSON.stringify):

data: { a: ab, b: bc, c: cd, d: de }

您正在将数据转换为 1 个 JSON 字符串,这不是 MVC 所期望的。

"{"a":1,"b":2,"c":3,"d":4}"

相反,它需要键值对(正常的回发格式):

a=1&b=2&c=3&d=4

现在没有拼写错误的完整示例:

$(document).ready(function () {
$("#submitBTN").click(function(){
var ab = $('#selectedID1').val();
var bc = $('#selectedID2').val();
var cd = $('#selectedID3').val();
var de = $('#selectedID4').val();

$.ajax({
url: '/MyController/FilterData',
type: 'POST',
data: { a: ab, b: bc, c: cd, d: de },
success: function(result) {

},
error: function() {
}
});
});
});

如果只是 POST 请求,则不需要 JsonRequestBehavior.AllowGet(尽管它不会破坏任何内容)。

关于javascript - 使用 ajax 将数据字符串传递给 Controller ​​方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18160974/

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