Javascript 角度Post数组导致数据库中的所有NULL
我试图将数据发布到我的表T-SQL/Azure,但它所写的数据都是空的,只有一行,甚至没有完整的数组。我尝试了$param、serialize、$httpParamSerializer等的多种变体,但都没有将内容写入表中。即使console.log告诉我一切正常Javascript 角度Post数组导致数据库中的所有NULL,javascript,angularjs,azure,post,Javascript,Angularjs,Azure,Post,我试图将数据发布到我的表T-SQL/Azure,但它所写的数据都是空的,只有一行,甚至没有完整的数组。我尝试了$param、serialize、$httpParamSerializer等的多种变体,但都没有将内容写入表中。即使console.log告诉我一切正常 var data = $scope.test; console.log(data); var jsonData = angular.toJson(data); console.log(jsonData) var objectToSeri
var data = $scope.test;
console.log(data);
var jsonData = angular.toJson(data);
console.log(jsonData)
var objectToSerialize = { 'object': jsonData };
console.log(objectToSerialize);
$http({
url: 'http://url/api/UserOrderProductList',
method: "POST",
data: $.param(objectToSerialize),
//data: $.param(data),
//data: $.param(jsonData),
//data: $httpParamSerializerJQLike(objectToSerialize),
headers: { 'Content-Type': 'application/x-www-form-urlencoded' }
//headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }
}).success(function (data) {
alert("done");
});
这就是我要写的:
var data = {
"quantity": 0,
"title": "string",
"imageFront": "string"
}
使用相同的匹配表
在调试器中,获取创建的201和完整数组的表单数据
来自标题的表单数据:
object:[{"count":1,"title":"Lara croft",imageFront":"20170807234015"},
{"count":1,"title":"Dragon Age","imageFront":"20170807231312"},
{"count":2,"title":"Madden","imageFront":"20170807235148"}]
以下是预览/回复中的内容:
{"id":16,"count":null,"imageFront":null,"title":null}
这是后端部分,说明如何接收请求:
// POST: api/UserOrders
[ResponseType(typeof(UserOrderProductList))]
public async Task<IHttpActionResult> PostUserOrderProductList(UserOrderProductList UserOrderProductList)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.UserOrderProductLists.Add(UserOrderProductList);
await db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new { id = UserOrderProductList.id }, UserOrderProductList);
}
发生了什么,为什么都写空?
当我大摇大摆地写作时,一切都很好 尝试将内容类型设置为application/json,并将json数据传递给Web API:
var data = $scope.test;
var jsonData = angular.toJson(data);
$http({
url: 'http://url/api/UserOrderProductList',
method: "POST",
data: jsonData,
headers: { 'Content-Type': 'application/json' }
}).success(function (data) {
alert("done");
});
Web API的参数应该是列表而不是对象:
// POST: api/UserOrders
[ResponseType(typeof(UserOrderProductList))]
public async Task<IHttpActionResult> PostUserOrderProductList(List<UserOrderProductList> userOrderProductLists)
{
//...
}
这里回答了一个类似的问题:.感谢Arron Chen,将Angular Ng Repeat的内容发布到具有WEB API 2后端的数据库表中
var data = $scope.test; // CONTENTS OF THE NG-REPEAT
var jsonData = angular.toJson(data);
$http({
url: 'http://url/api/UserOrderProductList',
method: "POST",
data: jsonData,
headers: { 'Content-Type': 'application/json' }
}).success(function (data) {
alert("done");
});
使用匹配的后端:
// POST: api/UserOrders
[Route("api/UserOrderProductList/AddOrderList")]
public HttpResponseMessage PostUserOrderProductList(List<UserOrderProductList> UserOrderProductList)
{
db.UserOrderProductLists.AddRange(UserOrderProductList);
db.SaveChangesAsync();
return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
}
您的后端如何接收请求数据?你能编辑你的问题来包含代码吗?嗨,Aaron,我添加了后端部分同样的结果不幸的是Web API的参数应该是一个列表而不是一个对象。