我按照此页面上的示例为JQuery Datatables设置Ajax源代码。 http://datatables.net/release-datatables/examples/ajax/objects.html
如果我开始使用源文件就像它们的示例数组一样,我可以重新创建它,格式如下。
{
"aaData": [
{
"engine": "Trident",
"browser": "Internet Explorer 4.0",
"platform": "Win 95+",
"version": "4",
"grade": "X"
},
{
"engine": "Trident",
"browser": "Internet Explorer 5.0",
"platform": "Win 95+",
"version": "5",
"grade": "C"
}
]
}
但是,我使用的是ColdFusion,我希望我的源数据来自查询。所以,我跟着另一个关于从cfquery填充数组的例子。 http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec09f0b-7fea.html
这将使我的样本数据数组采用以下格式。
RecordID: 2, Name: Al
RecordID: 1, Name: Mike
RecordID: 3, Name: Bill
如何运行cfquery,以sAjaxSource属性所需的正确格式填充源文件?
答案 0 :(得分:3)
我写了JSON converter specifically for this:
<cfset rs.dt = new DataTables() />
<cfset rs.dt.setData( yourQuery ) /> <!--- yourQuery = ColdFusion query --->
<cfset rs.dt.setDataFormat( "struct" ) />
<cfreturn rs.dt.$renderData() />
将ColdFusion查询转换为jQuery DataTables格式。
DataTables.cfc需要ArrayCollection.cfc,它位于同一个存储库中。
答案 1 :(得分:3)
感谢您的回复。我最终使用了我在网上找到的一些代码片段来实现这一点。
这是我的源表(DataSource.cfm)
<cfquery name="Query1" datasource="x">
Select RecordID, NAME
From TestTable
</cfquery>
<cfset data = [] />
<cfoutput query="Query1">
<cfset obj = {
"RecordID" = RecordID,
"NAME" = Name
} />
<cfset arrayAppend(data, obj) />
</cfoutput>
<cfprocessingdirective suppresswhitespace="Yes">
<cfoutput>
{"aaData":
#serializeJSON(data)#
}
</cfoutput>
</cfprocessingdirective>
<cfsetting enablecfoutputonly="No" showdebugoutput="No">
这是JQuery
<script>
$(document).ready(function() {
var oTable = $('#example').dataTable( {
"bJQueryUI": true,
"bProcessing": true,
"bServerSide": false,
"sAjaxSource": "DataSource.cfm",
"aoColumns": [
{ "mData": "RecordID" },
{ "mData": "NAME" }
]
});
});
</script>
这是页面正文
<form>
<div id ="div1" class="dataTables_wrapper">
<table id="example">
<thead>
<tr>
<th>RecordID</th>
<th>NAME</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</form>
答案 2 :(得分:2)
myVar
)。appData
的结构中创建一个键,并将其设置为空数组。myStruct
)myStruct
,engine
等的browser
创建密钥,并根据查询行中的相关数据填充这些密钥。myStruct
追加到myVar.appData
数组。myVar
应该有一个类似于你的例子的结构,如果没有,你在某个地方犯了错误。