Javascript Ajax数据未到达后端C#代码

Javascript Ajax数据未到达后端C#代码,javascript,c#,ajax,Javascript,C#,Ajax,下面是我试图发送的代码。正如您所看到的,ajax调用是在UI上进行的,数据“sub”是传递的。此“子”中有一个对象数组。因此,数据在传递时是存在的 用户界面端 $scope.save = function () { var sanit = $scope.gridOptions.rowData; var sub = JSON.stringify(sanit); $.ajax({ type: 'POST

下面是我试图发送的代码。正如您所看到的,ajax调用是在UI上进行的,数据“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。我已经评论了显示这是null的部分,其中数据在后端函数的开始处显示为null

后端C#端

[HttpPost]
公共HttpResponseMessage PM([FromBody]字符串参数)//这是空的。
{
string message=string.Empty;
尝试
{
var model=JsonConvert.DeserializeObject(参数);
message=“插入成功”;
返回请求.CreateResponse(HttpStatusCode.OK,消息);
}
捕获(例外情况除外)
{
message=“插入失败”;
返回请求.CreateErrorResponse(HttpStatusCode.NoContent,消息);
}
}
有人能告诉我为什么它在后端显示为空值吗

看看这个:

您正在发送对象列表,但试图将其作为字符串接收。您应该将函数参数从(字符串参数)更改为(列表参数),并根据上面的链接更改ajax请求。这可能会解决你的问题。 (注:我自己无法尝试,这就是为什么我说:)

看看这个:

您正在发送对象列表,但试图将其作为字符串接收。您应该将函数参数从(字符串参数)更改为(列表参数),并根据上面的链接更改ajax请求。这可能会解决你的问题。
(注:我自己无法尝试,这就是为什么我可能会说:)

您需要确保通过AJAX发送的数据是一个具有单个参数的对象,该参数的名称应与后端所期望的参数完全相同

在这种情况下:

$.ajax({
  type: 'POST',
  url: '/api',
  data: JSON.stringify({ parameters: sub }),
  contentType: "application/json"
}).success(function (response) {
  ...
})
接下来,如果变量“sub”是一个对象数组,则必须创建一个类模型服务器端,以匹配所发送数据的结构。然后,您的API接口应该需要一个新创建类的列表

例如:

[HttpPost]
public HttpResponseMessage PM(List<YourClassModel> parameters)
{
  ...
}
[HttpPost]
公共HttpResponseMessage PM(列表参数)
{
...
}

您的API现在应该能够接收和读取通过上述AJAX调用发送的数据。

您需要确保通过AJAX发送的数据是一个具有单个参数的对象,该参数的名称应与后端所期望的参数完全相同

在这种情况下:

$.ajax({
  type: 'POST',
  url: '/api',
  data: JSON.stringify({ parameters: sub }),
  contentType: "application/json"
}).success(function (response) {
  ...
})
接下来,如果变量“sub”是一个对象数组,则必须创建一个类模型服务器端,以匹配所发送数据的结构。然后,您的API接口应该需要一个新创建类的列表

例如:

[HttpPost]
public HttpResponseMessage PM(List<YourClassModel> parameters)
{
  ...
}
[HttpPost]
公共HttpResponseMessage PM(列表参数)
{
...
}

您的API现在应该能够接收和读取通过上述AJAX调用发送的数据。

尝试将名称“parameters”更改为“sub”,以便它与您从AJAX传递的名称相匹配。sub是一个对象数组,post方法有一个字符串参数,因此您必须发送如下内容:{parameters:“data”}尝试将名称“parameters”更改为“sub”,使其与您从AJAXyou传递的名称相匹配。您提到sub是一个对象数组,并且您的post方法有一个字符串参数,因此您必须发送如下内容:{parameters:“data”}