ajax post 控制器中的数据为空 asp.net mvc 5
ajax post data is null in controller asp.net mvc 5
我尝试将 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 () {
}
})}
这是正在调用的控制器中的方法:
enter image description here
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 () {
}
})
我在其他任何地方都找不到这个答案,所以我不得不通过实验来发现它。希望这会对某人有所帮助。
您会发现在您的控制器中,它正在接收一个 Request.Form 对象,如果您查看 Request.Form[0],您会找到您的数据。表单中有数据但 MVC 将其视为 null 的原因是要发布的表单元素的键是“”(空白)。
所以客户端,你必须正确设置内容类型,并在你的数据前面加上类似 "myData=" + JSON.stringify(myJSONObject) 的内容,其中 "myData"是您要添加的键名,如下所示:
$.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
}
`
我尝试将 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 () {
}
})}
这是正在调用的控制器中的方法:
enter image description here
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 () {
}
})
我在其他任何地方都找不到这个答案,所以我不得不通过实验来发现它。希望这会对某人有所帮助。
您会发现在您的控制器中,它正在接收一个 Request.Form 对象,如果您查看 Request.Form[0],您会找到您的数据。表单中有数据但 MVC 将其视为 null 的原因是要发布的表单元素的键是“”(空白)。
所以客户端,你必须正确设置内容类型,并在你的数据前面加上类似 "myData=" + JSON.stringify(myJSONObject) 的内容,其中 "myData"是您要添加的键名,如下所示:
$.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
}
`