Хотя у меня был успех с созданием Highcharts Box-and-Whisker plot путем записи статических значений на страницу просмотра MVC 5, теперь я пытаюсь сделать то же самое, заполнив значения с помощью JsonResult функции в контроллере.Правильный метод заполнения поля диаграммы Highcharts с использованием JSON
Веб-сайт Highcharts имеет раздел на custom preprocessing data using JSON, но я до сих пор не увенчался успехом, используя метод, показанный на этом URL-адресе, только изменяя тип диаграммы на «boxplot» и определяя параметры. Поле предупреждения показывает, что значения данных успешно считываются из функции JsonResult, но диаграмма отображается без данных, которые я ожидаю увидеть.
Я проверил с Firebug и не видел ошибок jQuery при просмотре страницы в браузере.
Я пропустил что-то очевидное здесь? Я использую MVC 5 C# в Visual Studio.
@section scripts
{
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>
<script>
$(function() {
var options = {
chart: {
renderTo: 'container',
type: 'boxplot'
},
series: [{}]
};
$.ajax({
dataType: "json",
type: "POST",
url: "@Url.Action("GetChartData")",
cache: false,
async: false,
data: { _campus: "@ViewBag.SelectedCampus",
_semester: "@ViewBag.SelectedSemester",
_fy: "FY12" },
success: function (data) {
options.series[0].data = data;
var chart = new Highcharts.Chart(options);
alert(data); // I see the correct array set in the alert box:
// as written literally: 395,441,457,479,532
},
error: function (jqXHR, textStatus, errorThrown) {
alert("oops: " + textStatus + ": " + jqXHR.responseText);
}
});
});
</script>
}
Это скриншот того, что он выглядит следующим образом:
В случае это имеет значение, здесь есть функция JsonResult:
public JsonResult GetChartData(string _campus, string _semester, string _fy)
{
IEnumerable<MathAimsScaleScore> query = db.MathAimsScaleScores
.Where(m => m.Campus == _campus)
.Where(m => m.Semester == _semester)
.Where(m=>m.FY==_fy);
var FyList = query.Select(m => Convert.ToDouble(m.ScaleScore));
var jsonList = new double[5];
for (int i = 0; i < 5; i++)
{
jsonList[i] = Statistics.FiveNumberSummary(FyList)[i];
}
return Json(jsonList.ToArray());
}
«массив массивов» заканчивал тем, что ключевая фраза, которая обеспечила решение. Я опубликовал особенности того, что я сделал в своем собственном ответе - как пересмотренный блок JsonResult, так и блок сценариев. –