2017-09-25 68 views
0

我想从WS读取数据并将其附加到angularjs中的作用域变量。使用angularjs从Web服务读取数据

控制器API看起来是这样的:

public class ContactsController : ApiController 
{ 
    // GET: api/Contacts 
    public List<Contact> Get() 
    { 
     List<Contact> cl = new List<Contact>(); 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConStr"].ConnectionString); 
     SqlCommand cmd = new SqlCommand(@"SELECT * FROM Contacts", con); 

     try 
     { 
      con.Open(); 
      SqlDataReader rdr = cmd.ExecuteReader(); 
      while (rdr.Read()) 
      { 
       Contact c = new Contact(); 
       c.Name = rdr["Name"].ToString(); 
       c.Phone = (int)rdr["Phone"]; 
       c.Mail = rdr["Mail"].ToString(); 
       c.City = rdr["City"].ToString(); 
       c.Address = rdr["Address"].ToString(); 
       c.Image = rdr["Image"].ToString(); 
       cl.Add(c); 
      } 
      rdr.Close(); 
     } 
     catch (Exception e) 
     { 

     } 
     finally 
     { 
      con.Close(); 
     } 
     return cl; 
    } 

的HTML控制器看起来是这样的:

controller: function ($scope, $http) { 
          var url = "http://example.com" 
          $http.get(url + "/api/Contacts").then(function (res) { 
           $scope.contacts = res.data; 
          }, function (err) { alert(err);}); 

但res.data似乎包含了什么。 任何帮助,将不胜感激。

谢谢

+0

能否通过邮差(浏览器插件)和交叉检查API响应是否响应确实有数据?如果它不是那么API的问题。 – fiberair

+0

@Jadenkun它不回答这个问题,但我很确定错误不在html控制器。只需仔细检查一下,看是否res直接包含所有数据而不是res.data。如果这也是空的,那么有人应该回来在API控制器中需要更改的内容。 –

回答

0

你刚刚返回List<Contact>对象,就可以直接使用response代替response.data

刚刚尝试这个代码,而不是你的

$scope.contacts = res; 

应检查return cl;被返回任何结果