我正在使用YUI数据表和数据源来渲染我的一个项目中的数据。返回的数据恰好为NULL,YUI数据源无法解析它。
下面是datasource和datatable的声明代码。为了便于阅读,我正在分离每个声明。
列描述声明
var columnDescription =
[
{key:'Requirements'},
{key:'abc'},
{key:'xyz'}
];
此columnDescription在以下函数中设置。
数据源声明
var dataSrcSample = new YAHOO.util.FunctionDataSource(getDataGrid);
myDataSource.connMethodPost = true;
myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
myDataSource.responseSchema = {
fields:['Requirements',
{key:'abc',parser:YAHOO.util.DataSource.parseString},
{key:'xyz',parser:YAHOO.util.DataSource.parseString}]
};
getDataGrid 函数调用服务器端从服务器获取数据。
以下是表格定义本身。
YAHOO.example.sampleTable = function()
{
var columnDesc=columnDescription;
var myDataSource = dataSrcSample;
var oConfigs =
{
width:'100%'
};
var myDataTable = new YAHOO.widget.DataTable("tableContainerDiv", columnDesc, myDataSource, oConfigs);
}();
tableContainerDiv 在html页面中声明。这是容器div。 从服务器获取JSON数据的函数。
function getDataGrid()
{
//calls backend and gets the data
}
该函数返回具有一些空值的json字符串。数据源构造函数抱怨以下问题。
我检查了yui documentation,发现字符串解析器不解析空值。我想知道是否有任何方法来解析这些数据。我是否必须处理响应解析原始数据?任何建议表示赞赏。
答案 0 :(得分:0)
首先确保您需要解析器:字段的YAHOO.util.DataSource.parseString。我还没有看到你的JSON结构。所以我不能对此发表评论。
其他选项是使用自定义格式化程序。类似下面的代码片段就可以了。
var customFormatter = function(elCell, oRecord, oColumn, sData) {
elCell.innerHTML = '';
try {
var strData = YAHOO.lang.JSON.parse(sData);
// set the elCell.innerHTML based on the strData
} catch {
// don't to anything
}
}
myDataSource.responseSchema = {fields:['Requirements', 'abc', 'xyz']};
var columnDescription =
[
{key:'Requirements'},
{key:'abc',
formatter: customFormatter
},
{key:'xyz',
formatter: customFormatter
}
];