无法在Ionic Framework中使用$ http.post发送数据

时间:2016-11-24 12:50:36

标签: http post asp.net-web-api ionic-framework

我正在尝试使用Ionic框架创建一个可以将数据发送到MS SQL服务器的应用程序。为此我使用web api。我在获取数据方面没有问题,但发送新数据有问题。这是我的离子代码:

angular.module('starter.controllers',[])

.controller('CheckListCtrl', function($scope, ChecklistService, $ionicPopup) {
  function addCheck(){
    ChecklistService.addCheck()
  }

.factory('ChecklistService', ['$http', function ($scope, $http) {
  var urlBase = 'http://localhost:56401/api';
  var CityService = {};
  CityService.addCheck = function(){
    var url = urlBase + "/TBLCHECKLISTs"
    var checkdata = {
      AKTIF : true,
      SIL : false,
      KAYITTARIHI : Date.now(),
      KULLANICIID : 3,
      BASLIK : "Onur",
      TAMAMLANDI : false,
      TAMAMLANMATARIHI : null,
      GUN : 1
    }
    var request = $http({
      method: 'POST',
      url: url,
      headers: {'Content-Type': 'application/x-www-form-urlencoded'},
      data: checkdata
    });
    return request;
  }
  return CityService;
}]);

这是我的网页api:

        [HttpPost]
        [ResponseType(typeof(TBLCHECKLIST))]
        public IHttpActionResult PostTBLCHECKLIST(TBLCHECKLIST tBLCHECKLIST)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            tBLCHECKLIST.KAYITTARIHI = DateTime.Now;
            db.TBLCHECKLISTs.Add(tBLCHECKLIST);
            db.SaveChanges();

            return CreatedAtRoute("DefaultApi", new { id = tBLCHECKLIST.TABLEID }, tBLCHECKLIST);
        }

当我尝试发送时,我得到了这个例外:

enter image description here

之后,我意识到我接受了这个例外,因为我的checkdata永远不会来到web api。我不知道为什么。

这些不是我发送的数据:

enter image description here

我尝试了不同版本的帖子请求,但没有。当我尝试使用PostMan发送数据时,它可以工作,我可以将数据插入到我的数据库中。但为什么我不能用我的申请呢?有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

我认为这应该是问题所在:

headers: {'Content-Type': 'application/x-www-form-urlencoded'}

试试这个:

return $http.post(url, checkdata);

在你的API中:

[HttpPost]
[ResponseType(typeof(TBLCHECKLIST))]
public IHttpActionResult PostTBLCHECKLIST([FromBody]TBLCHECKLIST tBLCHECKLIST)
{
    //code here
}

另外,请确保您的checkdata属性与TBLCHECKLIST c#类型的属性相匹配。