【发布时间】:2016-09-22 08:18:41
【问题描述】:
下面是我试图发送的代码。如您所见,在 UI 上进行了 ajax 调用,并传递了数据“sub”。这个“子”中有一个对象数组。所以数据在传递时就存在。
用户界面
$scope.save = function () {
var sanit = $scope.gridOptions.rowData;
var sub = JSON.stringify(sanit);
$.ajax({
type: 'POST',
url: '/api/Pr/PM',
data: sub, //this has data in it
contentType: "application/json"
}).success(function (response) {
window.alert("Database updated successfully.");
})
};
但是,当我在后端调试代码时,参数显示为 null。我已经评论了显示 this is null 的部分,其中数据在后端函数开始时显示为 null。
后端 C# 端
[HttpPost]
public HttpResponseMessage PM([FromBody] string parameters) //this is null.
{
string message = string.Empty;
try
{
var model = JsonConvert.DeserializeObject<List<PODetails>>(parameters);
message = "Insert Successfull";
return Request.CreateResponse(HttpStatusCode.OK, message);
}
catch (Exception ex)
{
message = "Insert fail";
return Request.CreateErrorResponse(HttpStatusCode.NoContent, message);
}
}
有人可以告诉我为什么它在后端显示为空值。
【问题讨论】:
-
尝试将名称“parameters”更改为“sub”,使其与您从 AJAX 传递的名称匹配
-
你提到 sub 是一个对象数组,你 post 方法有一个字符串参数,所以你必须发送这样的东西:{ parameters: "data" }
标签: javascript c# ajax