尝试将数组传递给 ajax 加载函数,但我的控制器没有正确获取数组
Posted
技术标签:
【中文标题】尝试将数组传递给 ajax 加载函数,但我的控制器没有正确获取数组【英文标题】:Trying to pass an array to ajax load function but my controller doesn't get the array properly 【发布时间】:2021-11-05 14:50:42 【问题描述】:那是JQuery:
$(function ()
$('#dish-filter-form').on("submit", function (e)
e.preventDefault();
var dishName = encodeURIComponent($('#dishName').val());
var selectFoodType = encodeURIComponent($('#selectFoodType').val());
var cities = ["New-York", "Tokyo", "Madrid"];
var strCities= JSON.stringify(cities);
console.log(strCities);
$('.toLoad').load('/Dishes/Search?dishName=' + dishName + "&cities[]=" + strCities+ + "&selectFoodType=" + selectFoodType);
);
);
这是我在 DishesController 中的 Search 方法的签名:
public async Task<IActionResult> Search(string dishName, string[] cities, string selectFoodType)
调试时,我看到 discName 和 selectFoodType 已被很好地读取,但城市始终是一个空数组,尽管我的控制台显示数组:strCities
是我希望的。
【问题讨论】:
你没有通过strCities
;你在那里有...cities[]=" + cities + "&...
。
我发布了旧版本,对不起。仍然不适用于 strCities
如果我没记错的话,数组必须作为单独的参数传递。见How do I accept an array as an ASP.NET MVC controller action parameter?
【参考方案1】:
考虑以下内容。
$(function ()
$('#dish-filter-form').on("submit", function (e)
e.preventDefault();
var dishName = encodeURIComponent($('#dishName').val());
var selectFoodType = encodeURIComponent($('#selectFoodType').val());
var cities = ["New-York", "Tokyo", "Madrid"];
var strCities= JSON.stringify(cities);
console.log(strCities);
$('.toLoad').load('/Dishes/Search?dishName=' + dishName + "&cities=" + strCities + "&selectFoodType=" + selectFoodType);
);
);
由于您将数组转换为字符串,因此您应该将字符串传递到您的 GET 请求中。
【讨论】:
以上是关于尝试将数组传递给 ajax 加载函数,但我的控制器没有正确获取数组的主要内容,如果未能解决你的问题,请参考以下文章
如何将视图中的数组传递给 ajax 并在 Laravel 5 的控制器中访问?