Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度Post数组导致数据库中的所有NULL_Javascript_Angularjs_Azure_Post - Fatal编程技术网

Javascript 角度Post数组导致数据库中的所有NULL

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

我试图将数据发布到我的表T-SQL/Azure,但它所写的数据都是空的,只有一行,甚至没有完整的数组。我尝试了$param、serialize、$httpParamSerializer等的多种变体,但都没有将内容写入表中。即使console.log告诉我一切正常

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的参数应该是一个列表而不是一个对象。