Return Handsontable 兼容格式的 MVC Json

Return MVC Json in Handsontable compatible format

我正在使用 MVC 和 Handsontable 创建类似 excel 的显示,但我无法将控制器设置为 return json Handsontable 可以使用的格式。

MVC 控制器 return 是 JsonResult:

return Json(results, JsonRequestBehavior.AllowGet);

这是return数据的js函数:

function GetCategoryAttributeList() {
    var categoryattributelist = "";
    $.ajax({
         async: true,
         type: "POST",
         url: "[myurl]/PopulateHOT",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function (msg) {
             categoryattributelist = msg;
         }
        return categoryattributelist;
    });

在 Firebug 中,我可以看到 returned 数据:

[{ StockCatalogueItemId=235031,  SKU="03121017593518"}, { StockCatalogueItemId=235032,  SKU="03121018032318"} ...etc

我调用函数并将结果赋给一个变量:

var categoryattributelist = GetCategoryAttributeList();

然后在初始化代码中使用结果:

var hotElement = document.getElementById('#example');
    var hot = new Handsontable(hotElement, {
        data: categoryattributelist
    });

此时,数据现在看起来略有不同(注意在每个元素之前添加了 'Object'):

[Object { StockCatalogueItemId=235031,  SKU="03121017593518"}, Object { StockCatalogueItemId=235032,  SKU="03121018032318"} ...etc

所以当前的游戏状态是一个控制台错误,我似乎无法超越这个:

TypeError: rootElement is null

有什么想法吗?

尝试在 ajax 回调中使用初始化代码,看看是否有效

function GetCategoryAttributeList() {
    $.ajax({
         async: true,
         type: "POST",
         url: "[myurl]/PopulateHOT",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         success: function (data) {
             //handle returned data from service
             var hotElement = $('#example');
             if(hotElement){
                 var hot = new Handsontable(hotElement, { data: data });
             }
         }
    });