如何解决mysql 的数据表似乎是错误的
我有用于 MysqL 的 Coldfusion 版本 10 的数据表,但似乎有一些我无法解决的语法错误,而且分页和排序也无法正常工作,它往往会保持处理图标即使在控制台显示 200,它也发生在搜索中
我的 CFM 代码
<cffunction name="getDataForTable" access="remote" returnformat="json" returntype="any" output="false">
<cfargument name="inParam" type="any" default="#{}#">
<cfset var isQueryUsed = structkeyexists(inParam,'queryName') and inParam.queryName neq ''>
<cfif isQueryUsed>
<cfset var qryResults = queryexecute("#PreserveSingleQuotes(inParam.queryName)#",{},{datasource='xxx'})>
</cfif>
<cfset var tableFields = (inParam.queryName neq '') ? qryResults.getMetaData().getColumnLabels() : inParam.Columns/>
<cfset noOfTableFields = ArrayLen(tableFields)>
<cfset searchFields= tableFields>
<cfset noOfSearchFields = ArrayLen(searchFields)>
<cfset start= Int(Val(inParam.start))>
<cfset length= Int(Val(inParam.length))>
<cfset search= Trim(inParam['search[value]'])>
<cfset iSortCol_0= Int(Val(inParam['order[0][column]']))>
<cfif LCase(inParam['order[0][dir]']) EQ 'asc'>
<cfset sSortDir_0='asc'>
<cfelse>
<cfset sSortDir_0='desc'>
</cfif>
<cfset queryWhere="">
<cfif (search NEQ '')>
<cfset queryWhere ="AND (">
<cfloop from="1" to="#noOfSearchFields#" index="counter">
<cfset queryWhere=queryWhere &" lower(#searchFields[counter]#) LIKE '%#Lcase(search)#%' ">
<cfif counter LT noOfSearchFields>
<cfset queryWhere=queryWhere&" OR">
</cfif>
</cfloop>
<cfset queryWhere=queryWhere&")">
</cfif>
<cfif iSortCol_0 NEQ 0>
<cfset queryOrder='ORDER BY #tableFields[iSortCol_0 + 1]# #sSortDir_0#'>
<cfelse>
<cfset queryOrder=''>
</cfif>
<cfif length NEQ 0>
<cfset queryLimit='LIMIT #length# OFFSET #start#'>
<cfelse>
<cfset queryLimit=''>
</cfif>
<cfif isQueryUsed>
<cfquery name="queryResult" datasource="xxx">
#PreserveSingleQuotes(queryName)#
#PreserveSingleQuotes(queryWhere)#
#queryOrder#
#queryLimit#
</cfquery>
<cfquery name="querycount" datasource="xxx">
#PreserveSingleQuotes(queryName)#
#PreserveSingleQuotes(queryWhere)#
#queryOrder#
#queryLimit#
</cfquery>
<cfelse>
<cfquery name="queryResult" datasource="xxx">
select #ArrayToList(tableFields)# FROM #dataTable# #PreserveSingleQuotes(queryWhere)# #queryOrder# #queryLimit#
</cfquery>
<cfquery name="querycount" datasource="xxx">
select count(*) OVER() AS total FROM #dataTable# #PreserveSingleQuotes(queryWhere)# #queryOrder# #queryLimit#
</cfquery>
</cfif>
<cfsavecontent variable="datatablesjson">
<cfloop from="1" to="#queryResult.RecordCount#" index="counter">
<cfoutput>
[
<cfloop from="1" to="#noOfTableFields#" index="innerCounter">
<cfif tableFields[innerCounter] EQ "start_date">
"#JsstringFormat(dateformat(queryResult[tableFields[innerCounter]][counter],'yyyy/mm/dd'))#"
<cfelse>
"#JsstringFormat(queryResult[tableFields[innerCounter]][counter])#"
</cfif>
<cfif innerCounter LT noOfTableFields>,</cfif>
</cfloop>
]
<cfif counter LT queryResult.RecordCount>,</cfif>
</cfoutput>
</cfloop>
</cfsavecontent>
<cfif queryResult.RecordCount is 0>
<cfset datatablesjson=' [ '>
<cfloop from="1" to="#noOfTableFields#" index="counter">
<cfset datatablesjson=datatablesjson>
<cfif counter LT noOfTableFields>
<cfset datatablesjson=datatablesjson&','>
</cfif>
</cfloop>
<cfset datatablesjson=datatablesjson&' ] '>
</cfif>
<cfsavecontent variable="sGrid">
<cfoutput>
{
"draw": #Int(Val(inParam.draw))#,"recordsTotal": <cfif querycount.recordcount GT 0>#querycount.recordcount#<cfelse>0</cfif>,"recordsFiltered": <cfif querycount.recordcount GT 0>#querycount.recordcount#<cfelse>0</cfif>,"data": [#datatablesjson#]
}
</cfoutput>
</cfsavecontent>
<cfreturn sGrid>
</cffunction>
我的数据表代码
$(document).ready( function () {
var table = $('.display').DataTable({
"order" : [[ 0,"desc" ]],"stateSave" : true,"processing" : true,"serverSide" : true,"ajax" : "ajaxprocess.cfm"
});
});
ajaxprocess.cfm 为:
<cfset sJSON = getDataForTable(url)>
<cfcontent reset="Yes" />
<cfoutput>#trim(sJSON)#</cfoutput>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。