c# - 无法使用 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}。
我真的需要你的帮助,感谢你为我提供的任何建议和帮助。
解决方案
如您所知,请求的 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));
推荐阅读
- python - 检查连接组件的相邻像素
- wpf - .Net app installed/running in AppData folder?
- html - 使用多个 ckeditor 时 $digest 已经在进行中
- angular - Access-Control-Allow-Origin' 标头包含多个值
- django - 多对多计数和优化查询
- c# - .NET Web 应用程序中的本机依赖项不加载
- javascript - 当我在 try-catch 中使用 setTimeout 时返回不起作用
- node.js - 使用“请求”模块在 node.js 中使用 POST 操作时失败
- angular - 来自对象数组的角度多个输入
- oracle - 我无法在 OEL 7 上加速 PostgreSQL 10.4