首页 > 解决方案 > 无法使用 ajax C# 发送字符串数组

问题描述

我在使用 ajax 将字符串数组发送到 C# 控制器时遇到了一些麻烦。我尝试了很多东西,但我无法让它发挥作用。

这是我的 C# 控制器:

    [HttpPost]
    [Route("getavailabilities")]
    [Authorize]
    public IActionResult GetAvailabilities(string[] data)
    {
        return StatusCode((int)HttpStatusCode.OK, new
        {
            data = ""
        });
    }

然后我的ajax调用:

function apiExecuteRequest(callback, uri, type, data) {
$.ajax({
    url: uri,
    type: type,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    data: data,
    success: (apiReply) => {
        callback(apiReply);
    },
    failure: (xmlHttpRequest, textStatus, errorThrown) => {
        callback({ isSuccess: false, error: textStatus + " " + errorThrown, message: xmlHttpRequest.responseJSON });
    },
    error: (xmlHttpRequest, textStatus, errorThrown) => {
        callback({ isSuccess: false, error: textStatus + " " + errorThrown, message: xmlHttpRequest.responseJSON });
    }
});

}

function apiExecuteAuthenticatedRequestAsync(callback, uri, type, data) {
apiGetTokenAsync((token) => {
    $.ajaxSetup({
        beforeSend: (xhr) => {
            xhr.setRequestHeader("Authorization", "bearer " + token);
        }
    });
    apiExecuteRequest(callback, uri, type, data);
});

要获取我的数组,我使用:

var data = this.values2.map(function (item) {return item.ItemId;})
apiExecuteAuthenticatedRequestAsync((response) => {
...
}, apiUrl + 'dashboard/getavailabilities', "POST", data);

我得到的是每次 Null。当我将参数设置为对象或动态时,我得到:{object}。

我真的需要你的帮助,感谢你为我提供的任何建议和帮助。

标签: c#arraysajaxpostmodel-view-controller

解决方案


如您所知,请求的 dataType 是 application/json。因此,您需要使用 JSON.stringify 将数据转换为 Json String,如下所示:

var data = this.values2.map(function (item) {return item.ItemId;})
apiExecuteAuthenticatedRequestAsync((response) => {
...
}, apiUrl + 'dashboard/getavailabilities', "POST", JSON.stringify(data));

推荐阅读