javascript - Ajax 将 JSON 发送到方法导致 null
问题描述
我不明白问题出在哪里。
我有一个 AJAX 调用,它将带有一些文件路径的对象传递给控制器以供下载。这是 AJAX 调用:
var listD = [];
listD.push("Some Text");
listD.push("Some other Text");
var oList = {};
oList.Urls=listD;
$.ajax({
method: 'POST',
url: '/api/file/DownloadM/',
data: JSON.stringify(oList),
contentType: "application/json; charset=utf-8",
success: function (response) {
alert("OOOOOOK");
},
error: function (response) {
alert("NOOOOOOO");
} });
我的应用程序中有一个名为 DownloadUrls 的模型:
public class DownloadUrl
{
string[] Urls { get; set; }
}
这是我的方法:
[Route("api/file/downloadM/")]//{username}")]
[HttpPost]
public HttpResponseMessage DownloadM(DownloadUrl postedData) {
--do some stuff---
}
我不明白为什么我的postedData 是一个Urls 属性设置为null 的对象。如果我将postedData 声明为对象,我会得到我的JSON 文本。
我错过了什么?我是网络开发的新手,我会开始用我的头破坏桌子。
解决方案
您不应该在 jquery Ajax 调用的数据字段中对传递的对象进行字符串化。
尝试跳过 JSON.stringify():
$.ajax({
method: 'POST',
url: '/api/file/DownloadM/',
data: oList,
contentType: "application/json; charset=utf-8",
success: function (response) {
alert("OOOOOOK");
},
error: function (response) {
alert("NOOOOOOO");
}
});
编辑:我还注意到您班级中的 Urls 属性未标记为公共。确保将其标记为公共,以便模型绑定器可以成功填充该属性。
public class DownloadUrl
{
public string[] Urls { get; set; }
}
推荐阅读
- docker - 通过docker“下载”应用程序后,我的计算机中真的有它吗?如果是这样,它们存储在哪里?
- php - 将一行数据从一个数据表导出到另一个
- excel - VBA中的循环剪切和粘贴功能
- python - 从 matplotlib 获取阶跃函数值
- azure - 用于分隔 Azure 数据工厂中的唯一记录的动态数据流
- c++ - 转置矩阵 // C++
- javascript - 如何在 React 中延迟文件导入?
- jquery - 向下滚动时淡入元素 - 但仍在加载时显示
- javascript - 使用 momentjs 将秒数格式化为分钟和秒
- python - Flask request.get_data() 不处理 UTF-8 字符