2015-03-26 2 views
0

Я пытаюсь создать таблицу пирога с использованием JsonResult и Chart.jsПередача JSon с помощью JsonResult не работает должным образом

Вот мой код, который я пытаюсь

$.ajax({ 
       type: "POST", 
       url: "/User/Pie/", 
       data: { 'campaignID': 5 }, 
       success: function (data) { 
        pieData = data;    
        new Chart(document.getElementById("pie").getContext("2d")).Pie(pieData); 
       }, 
       error: function (data) { 
        alert("Error:" + JSON.stringify(data)); 
       } 
      }); 

Контроллер

[HttpPost] 
     public JsonResult Pie(string campaignID) 
     { 
      try 
      { 
       return Json("[{ value: 40, color: \"#000000\"},{value: 60,color: \"#01dfde\"},{value: 60,color: \"#01dfde\"}]", JsonRequestBehavior.AllowGet); 
      } 
      catch(Exception ex) 
      { 
       return null; 
      } 
     } 

Что не работает. Я получаю Json от контроллера успешно, но диаграмма не видна.

Если я ставлю JSon в pieData статике, он работает все хорошо

pieData = [{ value: 40, color: \"#000000\"},{value: 60,color: \"#01dfde\"},{value: 60,color: \"#01dfde\"}]; 

Я также попытался JSON.parse

+0

просто проверьте наличие ошибок в консоли. –

+0

Нет, в консоли нет ошибок. –

ответ

1

Вы должны пройти C# массив Json метода, он преобразует его в формат JSON само по себе:

var pieData= new[] 
      { 
       new { value = 40, color = "#000000" }, 
       new { value = 60, color="#01dfde"}, 
       new { value=60, color = "#01dfde"} 
       }; 
return Json(pieData, JsonRequestBehavior.AllowGet); 
+0

Благодарим вас за ответ. Он работает хорошо. Так что это значит, если я прохожу прямо. Он проходит как одна строка? –

+0

Да, я не уверен, что то, как вы делали, будет работать или нет, но мы просто передаем объект C# в '' JSON() '', и он преобразуется в json для нас –

Смежные вопросы