尝试将数组传递给 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 + "&amp;... 我发布了旧版本,对不起。仍然不适用于 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 的控制器中访问?

将c#集合序列化为视图中的jquery数组以通过ajax方法传递给控制器

将 JavaScript 对象数组传递给控制器

使用 Jquery/Ajax 将模型传递给控制器

将数组数组从 Ajax 传递给控制器

将 AJAX 变量传递给 PHP