【问题标题】:Fail to send array of string using ajax C#无法使用 ajax C# 发送字符串数组
【发布时间】:2018-07-24 16:06:20
【问题描述】:

我在使用 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# arrays ajax post model-view-controller


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的回答,但没有解决问题 值为:{string[0]}
    • 你在console.log(data)发送之前得到了什么?
    猜你喜欢
    • 2017-08-13
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多