无法使用Ajax C#发送字符串数组

时间:2018-07-24 16:06:21

标签: c# arrays ajax post model-view-controller

使用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或dynamic时,我得到:{object}。

我真的需要您的帮助,感谢您提供的建议和帮助。

1 个答案:

答案 0 :(得分:0)

您知道请求的数据类型是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));