我有一个表单,它包括各种<input>
元素,并使用1对n制表表进行数据输入。我已经成功地将这些元素中的数据组装成JSON字符串。我现在正试图完成以下两个步骤:
- 使用Ajax,将JSON对象发布到我的web服务器;以及
- 在ASP.NET MVC控制器中,将反序列化的JSON数据上载到SQL Server 2016表中
我的用于POST JSON对象的客户端脚本如下:
var myJson = "the data from the form elements is programmatically inserted into the JSON string";
// use parseJSON() to test the syntax
try {
var obj = jQuery.parseJSON(myJson);
}
catch(error) {
console.log(error);
}
$.ajax({
type: "POST",
url: "/Dailies/UploadJson/",
dataType: 'json',
data: JSON.stringify(myJson),
contentType: 'application/json',
crossDomain: true,
cache: false,
success: function(data) { console.log(data); }
});
在我的ASP.NET MVC控制器中调用的方法如下所示:
[HttpPost]
public IActionResult UploadJson(Object jsonFile)
{
// insert data into SQL Server table
}
注意:我已经在我的ASP.NET MVC应用程序中创建了适当的域模型,并且还添加了对DbContext
模型的DbSet
引用。我已经验证了使用模拟数据将行插入SQL Server表的能力。
当我在UploadJson()
方法中放置断点时,我发现jsonFile对象为null。
在这一点上,我的困惑有两方面:
- 我似乎无法将JSON数据从客户端获取到web服务器;以及
- 我需要更好地理解如何将JSON数据(一旦收到(转换为上传到我的数据库中
非常感谢您的帮助。
尽管有很多问题与此相关,但这些问题的答案通常指绑定到模型,而不仅仅是json字符串。但这些也会对你有所帮助。
看起来有两件事:
- 我会将控制器更改为接收
string
而不是对象 - 您需要更新传递给控制器的json数据,以匹配控制器的参数名称。因此,在这种情况下,控制器将接收一个名为
jsonFile
的参数。因此,在$.ajax
方法中,您需要将data
更新为以下内容:
data: { jsonFile: JSON.stringify(myJson) }
更新:
- 删除
application/json
的内容类型