我的帖子操作有问题,收到空对象 我有这个javascript代码来调用该操作
function forwardMsg(result) {
$.ajax({
type: 'POST',
url: '@Url.Action("ForwardHCFASuspendedMessage")',
dataType: 'json',
data:JSON.stringify( {
messageId: "@Model.MessageId",
result: result,
serviceLines: "@Model.ServiceLineSegment"
}),
error: function (response) {
alert(response.responseText);
},
success: function (response) {
alert(response);
}
});
}
答案 0 :(得分:0)
尝试使用jQuery的$post()
var data = {
messageId: "@Model.MessageId",
result: result,
serviceLines: "@Model.ServiceLineSegment"
};
$.post('@Url.Action("ForwardHCFASuspendedMessage")', JSON.stringify(data))
.success(function (response) {
alert(response);
})
.fail(function (response) {
alert(response.responseText);
});
这可以处理将JSON数据发布到端点的设置和ajax调用。这意味着所有的辛勤工作都是为你完成的,你需要提供的是网址和数据。
编辑:
在没有serviceLines: "@Model.ServiceLineSegment"
的情况下尝试通话,看看会发生什么。在进行POST调用之前,您需要将其转换为JavaScript数组,因为看到了:
System.Collections.Generic .List
1 [XIP.Infrastructure.Data.Claims.ServiceLineSegment_HCFA]“`
不是你想要的。我想你可以这样做:
var data = {
messageId: "@Model.MessageId",
result: result,
serviceLines: JSON.parse('@Html.Raw(Model.ServiceLineSegment)')
};
答案 1 :(得分:0)
function forwardMsg(result) {
var obj = {messageId: "@Model.MessageId",
result: result,
serviceLines: "@Model.ServiceLineSegment"};
var jsonStringHere = JSON.stringify(obj);
$.ajax({
type: 'POST',
url: '@Url?action=ForwardHCFASuspendedMessage',
dataType: 'json',
data: {jsonStringReceiver:jsonStringHere},
error: function (response) {
alert(response.responseText);
},
success: function (response) {
alert(response);
}
});
};
答案 2 :(得分:0)
看看这个:
我的代码在cshtml:
$(function () {
function forwardMsg() {
var dataToSend = JSON.stringify({
Id: @Model.Id,
SomeData: '@Model.SomeData',
Result: "Another test data"
});
$.ajax({
type: 'POST',
url: '@Url.Action("ForwardHCFASuspendedMessage", "Home")',
dataType: 'json',
contentType: 'application/json',
data: dataToSend,
error: function (response) {
alert(response.responseText);
},
success: function (response) {
alert(response);
}
});
}
$('body').on('click', '#myBtn', forwardMsg);
});
添加后,它开始适用于我:
contentType: 'application/json',