Javascript Ajax数据未到达后端C#代码
下面是我试图发送的代码。正如您所看到的,ajax调用是在UI上进行的,数据“sub”是传递的。此“子”中有一个对象数组。因此,数据在传递时是存在的 用户界面端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
$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”}