angularjs使用asp.net web服务

时间:2015-05-28 01:56:47

标签: asp.net angularjs web-services

美好的一天,

我是angularjs的新手,并开始主要通过网络服务提取数据。

我的网络服务从我的数据库中返回纬度和经度列表

这是代码

[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服务时,它会返回一个错误,指出我错过了我尝试的regionid的参数$.param : ({regionid : "7" , type : "pnp" }) and param:JSON.stringify({regionid:&#34; 7&#34;,type: &#34; PNP&#34;})

但它重新导致缺少相同的错误参数

有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:0)

根据您提供的内容类型'Content-Type': 'application/x-www-form-urlencoded',您似乎希望将数据作为url param发送。

然而,

  

默认情况下,$ http服务将通过将数据序列化为JSON来转换传出请求,然后使用内容类型“application / 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 () {});