以Handsontable兼容格式返回MVC Json

时间:2016-03-10 11:37:42

标签: json ajax asp.net-mvc handsontable

我正在使用MVC和Handsontable来创建类似excel的显示,但我无法让控制器以Handsontable可以使用的格式返回json。

MVC控制器返回JsonResult

return Json(results, JsonRequestBehavior.AllowGet);

这是返回数据的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中,我可以看到返回的数据:

[{ 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 { StockCatalogueItemId=235031,  SKU="03121017593518"}, Object { StockCatalogueItemId=235032,  SKU="03121018032318"} ...etc

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

TypeError: rootElement is null

任何想法?

1 个答案:

答案 0 :(得分:0)

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

$(document).ready(function(){
......
function test(){
    $("ul").html("<li>blablabla</li>...");
    alert( $("ul").html());  //alert 1 work like a charm it show the exact content
}
 test();
 alert( $("ul").html()); //alert 2 show that ul is empty :(
 .....
 }