首页 > 解决方案 > 尝试将数组传递给 ajax 加载函数,但我的控制器没有正确获取数组

问题描述

那是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 已被很好地读取,但 city 始终是一个空数组,尽管我的控制台向我显示 array:strCities是我希望的。

标签: jqueryasp.netajaxurlparameter-passing

解决方案


考虑以下。

$(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 请求中。


推荐阅读