我需要以下形式的JavaScript变量:
var myColumns = [{
name : "Name",
type : "string",
visible : true,
filterType : "search",
width : 200
},
{...}
]
根据this Dynamic Table JavaScript电子表格API。
作为我进行的AJAX调用的一部分,我将返回以下形式的JSON:
{
"columnData": "data as per var myColumns above",
"cellData": {
"cell1": "value1",
"cell2": "value2"
}
}
我的问题是,当我从ajax调用返回的JSON中获取“ columnData”并将其设置为变量时,JavaScript会将其解释为字符串,而不是数组。
var myColumns = result.columnData;
var myData = result.cellData;
但是,如果我要定义一个新变量并复制粘贴“ columnData”的内容,JavaScript会将其视为一个数组(正确的是,这正是我所期望的行为)。
那么我该如何构造JSON以便可以从中提取数组以满足列定义?
您可能对自己说:“只需将列定义设置为JSON并对其进行解析”。但是,我需要在列定义中传递一些函数,因此我无法在JSON中实现(如果我的理解正确的话)。
编辑: 我希望columnData是定义数组的原因是因为我希望能够返回如下内容:
[{
name : "Configuration ID",
type : "string",
visible : true,
filterType : "search",
width : 70,
field : "configuration_id"
editor : editableText
}]
其中editableText是JavaScript变量:
var editableText = $("<div/>").dynamicTableEditor({
editHandler: function(aData, aContext) {
$("#save-data").html("Saving note: <strong>" + aData + "</strong>");
executeAsync();
}
});
所以,如果我这样做:
var columnDefinition = results.columnData
console.log(columnsDefinition);
输出为:
[{
name : "Configuration ID",
type : "string",
visible : true,
filterType : "search",
width : 70,
field : "configuration_id"
editor : editableText = $("<div/>").dynamicTableEditor({
editHandler: function(aData, aContext) {
$("#save-data").html("Saving note: <strong>" + aData + "</strong>");
executeAsync();
}
})
}]