2015-05-28 69 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