2015-05-28 2 views
0

Добрый день,angularjs потреблять asp.net веб-службы

Я новичок в 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 включена страница я пытаюсь отобразить данные, предоставленные веб-службы вот код

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); 
      }); 

     }) 

теперь, когда веб-сервис вызывается она возвращает ошибку о том, что я не хватает качестве параметра RegionId я пытался $.param : ({regionid : "7" , type : "pnp" }) and пары: JSON.stringify ({RegionId: "7", типа: "ПНП"})

но Retruns тот же параметр ошибки отсутствует

какие-либо предложения?

спасибо

+0

Как выглядит подпись в методе datapull.asmx? – Chris

ответ

0

От типа содержимого вы предоставляете 'Content-Type': 'application/x-www-form-urlencoded', то кажется, что вы хотите отправить данные, как URL-адрес парам.

Однако

По умолчанию $ служба 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

благодарит веб-службу, как ожидалось, но формат для меня очень новый. пятьсот четвёртых Полицейский участок Морского

Camaligan рыбного порт комплекс, Bgy Dugcal, Camaligan, Cam Sur
123.1570000 13,6263864 /icons/PNP.png как я могу разобрать это? – angelogogo

+0

Вы возвращаете XML из своего контроллера, с которым трудно справиться в Angular. Попробуйте вернуть данные JSON. – Rebornix

+0

получил это спасибо – angelogogo

Смежные вопросы