我尝试将JSON对象发送回服务器。这是我的AJAX电话
function SaveData() {
var model = []
debugger
$.each($('.Money'), function (i, item) {
model.push({
Money: $('.Money').eq(i).val(),
Day: $('.Day').eq(i).val(),
Note: $('.Note').eq(i).val()
});
})
$.ajax({
url: '@Url.Action("Create")',
contentType: "application/json",
async: true,
data: { partnerDeposit: JSON.stringify(model) },
type: 'POST',
dataType: 'json',
succsess: function () {
}
})}
这是被调用的控制器中的方法:
https://i.stack.imgur.com/FqEt9.png
我遇到的问题是,上面的json变量总是一个空对象。成功函数被调用,但是当我调试时,json var显示为空。
请告诉我我做错了什么。谢谢。
尝试将partnerDeposit
添加到JSON.stringify
调用,如下所示:
$.ajax({
url: '@Url.Action("Create")',
contentType: "application/json",
async: true,
data: JSON.stringify({partnerDeposit: model}),
type: 'POST',
dataType: 'json',
succsess: function () {
}
})
我没有在其他任何地方找到这个答案,所以我不得不通过实验发现它。希望这会对某人有所帮助。
$.ajax({
type: "POST",
url: URL,
data: "myData="+JSON.stringify(myJSONObject),
contentType: "application/x-www-form-urlencoded; charset=utf-8"
在服务器端,您的[HttpPost]端点必须具有与您在AJAX中声明的密钥同名的变量作为其输入,如下所示:
`
[HttpPost]
[Authorize]
public ActionResult Index (string myData) // <-- var name matches AJAX
{
// de-serialize data into server-side object using
// JSONConvert.DeserializeObject
}
`