2016-11-24 65 views
0

我正在嘗試使用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; 
}]); 

,這裏是我的Web 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。我不知道爲什麼。

這些都不是我發DATAS:

enter image description here

我嘗試了多種不同版本的POST請求,但沒有的。當我嘗試使用PostMan發送數據時,它可以工作,並且可以將數據插入到我的數據庫中。但是爲什麼我不能用我的應用程序來做到這一點?有誰能夠幫助我?

+0

我不知道.NET但你允許跨域頭在你的API – sam

+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#類型中。

+0

現在我得到的XMLHttpRequest無法加載的http://本地主機:50367/API/TBLCHECKLISTs。預檢反應的HTTP狀態代碼無效405 –

+0

嘗試將應用程序/ x-www-form-urlencoded設置爲application/json。另外,請確保您允許在您的web api中使用Options方法。 – jpgrassi

相關問題