2017-12-05 4 views
0

내 테이블 (T-SQL/Azure)에 데이터를 게시하려하지만 NULL은 물론 한 줄, 심지어는 전체 배열까지만 씁니다. 나는 $ param, serialize, $ httpParamSerializer 등의 수많은 변형을 시도했다. 그 중 아무 것도 내용을 테이블에 쓰지 않는다. 심지어 콘솔에 .log는 나에게 모두 ok 인 것을 나에게 이야기한다. 같은 매칭 테이블각형 포스트 배열 결과 데이터베이스에 모두 NULL이 있습니다.

var data = { 
     "quantity": 0, 
     "title": "string", 
     "imageFront": "string" 
     } 

:

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"); 
     }); 

이 내가 쓰고있는 것입니다. 이것은 무엇을

object:[{"count":1,"title":"Lara croft",imageFront":"20170807234015"}, 
{"count":1,"title":"Dragon Age","imageFront":"20170807231312"}, 
{"count":2,"title":"Madden","imageFront":"20170807235148"}] 

는 미리보기/응답 말한다 : 디버거에서

가 만든 201 전체 배열의 형태로 데이터 헤더에서

양식 데이터를 얻을 수있다

// 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); 
    } 
:
{"id":16,"count":null,"imageFront":null,"title":null} 

이 는 요청을 받았습니다 방법 백엔드 부분이다

무슨 일이 벌어지고 있으며 왜 모두 NULL을 쓰는가? 내가 swagger로 글을 쓰고있을 때 모두 괜찮은 것으로 밝혀졌습니다.

+0

어떻게 백엔드 요청 데이터를 수신 않습니다 일치하는 백엔드와

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"); }); 

? 해당 코드를 포함하도록 질문을 편집 할 수 있습니까? –

+1

안녕하세요 아론, 백엔드 섹션을 추가했습니다 –

답변

1

시도 application/jsonContent-Type을 설정하고 웹 API에 JSON 데이터를 전달 :

// POST: api/UserOrders 
[ResponseType(typeof(UserOrderProductList))] 
public async Task<IHttpActionResult> PostUserOrderProductList(List<UserOrderProductList> userOrderProductLists) 
{ 
    //... 
} 

비슷한에게 : 객체가 아닌 목록을해야

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"); 
}); 

그리고 웹 API의 매개 변수 질문에 대한 답변은 Web Api 2 receive json array입니다.

+0

같은 결과가 불행하게도 –

+1

웹 API의 매개 변수는 Object가 아닌 List 여야합니다. –

+0

네, 작동합니다! 정말 고마워 –

0

Arron Chen 덕분에 Angular Ng-Repeat의 내용을 WEB API 2 백엔드가있는 데이터베이스 테이블에 게시합니다.

// 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 }; 
} 
관련 문제