2015-07-02 42 views
1

頁面上有2個下拉列表,每個下拉列表都綁定了來自數據庫的數據。 我打算在單次旅程中從服務器端返回所需的2個JSON對象。這是爲了不再次打到數據庫。訪問從C返回的多個JSON對象

如何訪問/使用這些返回的對象是我的問題。這可能嗎?

ASPX:

<select id="ddlSet"> 
<option ng-repeat="item in Sets" value="{{item}}">{{item}}</option> 
</select> 
<select id="ddlCircle"> 
<option ng-repeat="item in Circles" value="{{item}}">{{item}}</option> 
</select> 

C#:

[WebMethod] 
public void GetReportFilters() 
{ 
    List<Set> lstSets = null; 
    List<Circle> lstCircles = null; 
    ReportsDB.GetFiltersData(out lstSets, out lstCircles); 

    ReportFilters obj = new ReportFilters(); 
    obj.lstSets = lstSets; 
    obj.lstCircles = lstCircles; 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    Context.Response.Clear(); 
    Context.Response.ContentType = "application/json"; 
    HttpContext.Current.Response.Write(
      (serializer.Serialize(serializer.Serialize(obj)))); 

} 

如果它是一個JSON對象,我會做:

JS:

$scope.Sets=[]; 
$scope.Circles=[]; 
var promise = ReportsFactory.GetReportFilters(); 
     promise.then(function (success) { 
      if (success.data != null && success.data != '') { 
       $scope.Sets = JSON.parse(success.data); 
      } 
      else { 
       console.log(success.data); 
      } 
     }, 
     function (error) { 
      console.log(error); 
     }) 

回答

2

實際上它是一個JSON對象,包含其他2個對象

if (success.data != null && success.data != '') { 
    var data = JSON.parse(success.data); 
    $scope.Sets = data.lstSets; 
    $scope.Circles = data.lstCircles; 
} 

編輯:我認爲,如果你可以減少在C#1個側連載,你可以在JavaScript中訪問對象,而無需JSON.parse

+0

非常感謝。解決方案和技巧。兩人都工作。 – Qwerty