2015-05-28 91 views
0

美好的一天,angularjs消費asp.net的網絡服務

我是angularjs的新手,並且主要是通過Web服務拉動數據。

我的web服務從我的數據庫

這裏返回經度和緯度的列表是代碼

[WebMethod] 
     public List<friendlyforces> get_friendly(string regionid , string type) 
     { 
      List<friendlyforces> friendlies = new List<friendlyforces>(); 
      List<SqlParameter> parameters = new List<SqlParameter>(); 
      parameters.Add(new SqlParameter("@regid", regionid)); 
      parameters.Add(new SqlParameter("@type", type)); 
      SqlDataReader readers = SqlHelper.ExecuteReader(connection, "friendlyforces", parameters.ToArray()); 
      while (readers.Read()) 
      { 
       friendlies.Add(new friendlyforces()); 
       friendlies[(friendlies.Count - 1)].unit_name = readers["unit_name"].ToString(); 
       friendlies[(friendlies.Count - 1)].address = readers["adrress"].ToString(); 
       friendlies[(friendlies.Count - 1)].latitude = readers["latitude"].ToString(); 
       friendlies[(friendlies.Count - 1)].longitude = readers["longitude"].ToString(); 
       friendlies[(friendlies.Count - 1)].icon = readers["icon"].ToString(); 
      } 

      return friendlies; 
     } 
現在

我angularjs啓用頁面我試圖顯示由Web服務提供的數據這裏是代碼

var app = angular.module('Services', []); 

     app.controller('latController', function ($scope, $http) { 

      var url = "Services/datapull.asmx/get_friendly"; 

      $http({ 
       method: 'POST', 
       url: url, 
       headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, 
       data: JSON.stringify({ regionid: "7", type: "pnp" }) 
      }).success(function (data) { 
       var myjson = JSON.parse(data); 

       $scope.locations = JSON.parse(myjson); 
      }); 

     }) 

現在當Web服務調用它返回一個錯誤,說明我缺少一個參數我試圖的regionidPARAM:JSON.stringify({regionid: 「7」,類型: 「PNP」})

但它retruns相同的錯誤參數丟失

任何建議?

謝謝

+0

datapull.asmx方法上的簽名是什麼樣的? – Chris

回答

0

從您提供'Content-Type': 'application/x-www-form-urlencoded'內容類型,看來你要發送的數據作爲URL PARAM。

然而,

默認情況下,$ http服務將通過串行化數據爲JSON,然後與內容類型,「應用/ JSON」張貼變換傳出請求。

嘗試在請求中添加transformRequest

$http({ 
    method: 'POST', 
    url: url, 
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}, 
    transformRequest: function(obj) { 
     var str = []; 
     for(var p in obj) 
     str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p])); 
     return str.join("&"); 
    }, 
    data: { regionid: "7", type: "pnp" } 
    }).success(function() {}); 
+0

非常感謝web服務按預期返回,但格式對我來說是非常新的 第五百零四海事派出所

Camaligan漁港複雜,BGY Dugcal,Camaligan,凸輪蘇爾
123.1570000 13.6263864 /icons/PNP.png 如何解析這個? – angelogogo

+0

您正在從您的控制器返回XML,這在Angular中很難處理。嘗試返回JSON數據。 – Rebornix

+0

感謝您 – angelogogo