2015-06-23 80 views
0

我有以下控制器代碼來返回圖表數據到jquery。 更新:我修改了建議的代碼,但仍然出現錯誤。從控制器加載數據到圖表Jquery/MVC/C#

public JsonResult GetLeaveDataForPieChart(int user_id) 
    { 

     List<EmployeeLeaveHeader> elh1 = new List<EmployeeLeaveHeader>(); 
     List<ChartEvent> ch = new List<ChartEvent>(); 
     elh1 = itlbg1.EmployeeLeaveHeaders.Where(f => f.Employee_ID == user_id).ToList(); 

    foreach (var item in elh1) 
    { 
     ChartEvent ce = new ChartEvent(); 
     ce.value = (item.leaveAvailable * 100).ToString(); 
     ce.color = item.CompanyLeaves.LeaveTypes.color; 
     ce.highlight = "#ffffff"; 
     ce.label = item.CompanyLeaves.LeaveTypes.typeDescription + " Leave Available"; 
     ch.Add(ce); 

     ChartEvent ce1 = new ChartEvent(); 
     ce1.value = (item.leaveTaken * 100).ToString(); 
     ce1.color = item.CompanyLeaves.LeaveTypes.color_light; 
     ce1.highlight = "#ffffff"; 
     ce1.label = item.CompanyLeaves.LeaveTypes.typeDescription + " Leave Taken"; 
     ch.Add(ce1); 
    } 



    return Json(ch, JsonRequestBehavior.AllowGet); 

} 

我需要在jquery中檢索數據,以便它以需要的格式傳遞到餅圖數據。

(document).ready(function() { 

    user_id = $("#user_id_1").text(); 
    $.ajax({ 
     url: '/Leave/GetLeaveDataForPieChart/', 
     cache: false, 
     data: { user_id: user_id }, 
     type: "GET", 
     datatype: "json", 
     success: function (data) { 
      alert(data); 
      var pieChartCanvas = $("#pieChart").get(0).getContext("2d"); 
      var pieChart = new Chart(pieChartCanvas); 
      var PieData = $.each(data, function (idx, obj) { 
       var leave = new Object(); 

        leave.value = obj.value; 
        leave.color = obj.color; 
        leave.highlight = obj.highlight; 
        leave.label = obj.label; 
        alert(leave); 
        return leave; 
       }); 

        var pieOptions = { 
    //pie options.. 

}; 

       pieChart.Doughnut(PieData, pieOptions); 
      } 
     }); 

任何人都可以解釋如何將json數據轉換爲javascript對象傳遞給餅圖嗎?

+0

VAR OBJ = EVAL(PieData) –

+0

什麼是EVAL這裏是指()? 請解釋它如何與更新的代碼相關。 –

回答

3

這裏是你如何解析JSON字符串到對象中。

var jsonObject = JSON.parse(jsonString); 

這裏是你如何使用jQuery來獲取數據,並用它爲您的圖表

$.ajax({ 
     url: '/<Controller>/GetLeaveDataForPieChart/', 
     cache: false, 
     data: { user_id: <UserID> }, 
     type: "GET", 
     success: function (data, textStatus, xmlHttpRequest) { 
      data = JSON.parse(data); 
      //.... 
      //.... 
      //Chart 
      //.... 
      //.... 
      //.... 
     } 
    }); 
+0

即使我將它作爲控制器的json字符串返回,我是否還必須解析jsondata? –

+0

@Nisal Upendra你從控制器返回一個字符串,所以你需要解析它。要從控制器返回一個json對象,將返回類型更改爲ActionResult並返回Json(jsonResult); – Yohannes

+0

我照你說和我的圖表代碼現在看起來像這樣: ' $阿賈克斯({ 網址: '/離開/ GetLeaveDataForPieChart /', 緩存:假的, 數據:{USER_ID:USER_ID}, 類型: 「GET」, 成功:功能(數據){ 警報(數據); VAR = pieChartCanvas $( 「#餅圖」)得到(0).getContext( 「2D」); VAR餅圖=新圖表(pieChartCanvas); VAR PieData =數據; 變種pieOptions = {// 選項 }; pieChart.Doughnut(PieData,pieOptions); } }); ' 仍然不起作用。 –

相關問題