2017-01-31 47 views
0

我寫了一個角的服務,從我的C#後端得到了一些假數據。 C#後端正在爲該進程使用ASMX文件。我有數據回來,一切都很好,然後我的數據永遠不會填充。從服務返回的數據不正確的返回數據

我也有這種感覺它有事情做與數據通關到來自許回。

服務:

app.service('fakeDataCenter', function ($http) { 
    this.getFakeData = function() 
    { 
     var obj = { 
      phoneNumber: "", 
      faxNumber: "", 
      address: "Loading..", 
      }; 
     $.ajax({ 
      type: "POST", 
      url: "/Services/DataService.asmx/getFakeData", 
      cache: false, 
      contentType: "application/json; charset=utf-8", 
      data: "{}", 
      dataType: "json", 
      success: function(data, status){ 
       obj = data; 
      } 
     }); 

     return obj; 
    };}); 

我可以告訴大家,我打回OBJ,我打線的obj =數據之前。只有在數據填充後,我如何才能使代碼返回。

我已經嘗試把成功函數中return語句沒有任何的運氣。它只是返回一個未定義的對象。

+0

您應該考慮使用'$ http'從AngularJS而不是jQuery的'$ .ajax'。這裏的答案是ajax是異步的,所以在完成之前你要返回'obj'。見http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call –

+0

的可能的複製[如何返回從一個異步調用的響應?( http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call) –

+0

我已經改變了我的代碼來實現$ HTTP AngularJS方式仍然得到未定義回來,因爲它在達到承諾結果之前碰到了return語句。 –

回答

1

我建議你使用角度的方法,因爲你在你的應用程序中使用的角度。改變你的服務的方法是這樣的:

this.getFakeData = function(){ 
    var obj = { 
      phoneNumber: "", 
      faxNumber: "", 
      address: "Loading..", 
      }; 
    return $http.post('/Services/DataService.asmx/getFakeData', obj).then(
      function (res){ 
      return res.data; 
      }, 
      function(onErr){ 
      return onErr.data; 
      } 
    ) 
} 

,然後在你的角度控制器,你可以得到這樣返回的數據:

fakeDataCenter.getFakeData().then(
    function(data){ 
     //here in data there is your C# backend service data 
    } 
);