JQuery Datatables& ColdFusion - 如何以该格式获取阵列源数据?

时间:2014-04-11 14:51:23

标签: jquery ajax arrays coldfusion datatables

我按照此页面上的示例为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属性所需的正确格式填充源文件?

3 个答案:

答案 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)

  1. 创建一个结构变量(让我们称之为myVar)。
  2. 在名为appData的结构中创建一个键,并将其设置为空数组。
  3. 循环查询并在循环内部创建一个结构(让我们称之为myStruct
  4. 仍然在循环中,为名为myStructengine等的browser创建密钥,并根据查询行中的相关数据填充这些密钥。
  5. 仍在循环内,将myStruct追加到myVar.appData数组。
  6. 在循环之后,myVar应该有一个类似于你的例子的结构,如果没有,你在某个地方犯了错误。