2014-03-26 81 views
1

我使用AngularJS $ http發送數據到我的Web API服務器。如果我使用GET方法,則該數組在服務器上將爲空。 使用POST方法一切正常。使用GET方法發送數組的正確方法是什麼?問題發送Javascript數組到Web API方法使用GET

---- ---- GET

客戶端:

 $http({ 
     method: 'GET', 
     url: '/api/Status', 
     headers: { 'Authorization': $localStorage.accesstoken }, 
     data: statusID 
    }) 

服務器端:

[HttpGet] 
    public async Task<List<StatusForUpdate>> GetStatus([FromUri] List<int> StatusID) 
    { ... } 

---- ---- POST

客戶端:

 $http({ 
     method: 'POST', 
     url: '/api/Status', 
     headers: { 'Authorization': $localStorage.accesstoken }, 
     data: statusID 
    }) 

服務器端:

[HttpPost] 
    public async Task<List<StatusForUpdate>> GetStatus(List<int> StatusID) 
    { ... } 

回答

0

首先,利用data是不是得到正確,使用params代替

不幸的是,這種代碼:

var statusID = [1, 2]; 
    $http({ 
     method: 'GET', 
     url: '/api/Status', 
     headers: { 'Authorization': $localStorage.accesstoken }, 
     params: statusID 
    }) 

角將發送一個url像這個:http://server.com/api/Status?0=1&1=2

但是這種格式與web ap不匹配我默認預期的格式,它是:

http://server.com/api/Status?StatusID=1&StatusID=2

試試這個:

var statusID = [1, 2]; 
     $http({ 
      method: 'GET', 
      url: '/api/Status', 
      headers: { 'Authorization': $localStorage.accesstoken }, 
      params: {StatusID:statusID} 
     }) 

記住更新自己的角度來版本> = 1.2.0,對於版本1.0.x的,在網址看起來像這樣:

http://server.com/api/Status?StatusID=%5B1%2C2%5D

如果您使用的是舊角度版本,你不願意升級,只需手工您的網址發送到網絡api。

相關問題