2017-09-25 43 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;被返回任何結果