Jquery 如何在coldfusion中使用select2无限滚动?
给出的示例没有很好地解释,我不知道后端发生了什么事情来产生这些结果 编辑:我已更改我的cfc,以从查询中返回数量有限的行。我还附加了总行数,希望可以从data.total中的ajax调用它 氟氯化碳: 我相信我需要使用cfarguments page和page_limit来修改我的sql,但我不知道如何处理它们。我应该如何限制按页返回的行,然后添加下一页的行 js: 如果有人能找到一本关于select2如何合并无限滚动的教程,那就太好了 我相信我的问题在于ajax调用的结果部分,但我不确定。服务器端 后端页面必须返回包含两个值的JSON结构: 找到的记录总数 结果就是一系列的结构 默认情况下,插件希望结果结构包含两个键:id和text。从技术上讲,您可以使用不同的密钥名。但是,如果使用不同的名称,则必须编写自定义函数来格式化结果,即formatResult和formatSelection 样本: 代码: 。。。而不是Jquery 如何在coldfusion中使用select2无限滚动?,jquery,coldfusion,jquery-select2,Jquery,Coldfusion,Jquery Select2,给出的示例没有很好地解释,我不知道后端发生了什么事情来产生这些结果 编辑:我已更改我的cfc,以从查询中返回数量有限的行。我还附加了总行数,希望可以从data.total中的ajax调用它 氟氯化碳: 我相信我需要使用cfarguments page和page_limit来修改我的sql,但我不知道如何处理它们。我应该如何限制按页返回的行,然后添加下一页的行 js: 如果有人能找到一本关于select2如何合并无限滚动的教程,那就太好了 我相信我的问题在于ajax调用的结果部分,但我不确定
return { results: data, more: more };
优化:
话虽如此,当前的代码效率很低,因为它在每次请求时都检索整个表。在数据库端进行分页更有效。因此,数据库一次返回的记录不会超过10条。确切的语法是特定于数据库的:
顺便说一句,SQL中的许多内容因供应商而异。因此,当问题涉及查询时,最好将数据库类型和版本包含在标记中:Oops。我没注意到你算出了id和文本部分。啊,这对下一个家伙来说是个很好的解释-哇,你是最棒的。你在这个网站上回答了我的5个问题。
$(".select").select2({
allowClear: true,
blurOnChange: true,
openOnEnter: false,
ajax: {
url: "/surveymanagement/admin/client.cfc",
dataType: 'json',
quietMillis: 100,
data: function (term, page) {
return {
method: "GetClientsByName",
name: term,
page_limit: 10,
page: page
};
},
results: function (data, page) {
var more = (page * 10) < data.total;
return { results: data, more: more };
}
}
});
{"clients":[{"text":"client name ABC","id":112}],"total":1}
<cffunction name="getClientsByName" access="remote" returntype="string" output="false">
<cfargument name="name" type="string" required="yes">
<cfargument name="page" type="numeric" required="true">
<cfargument name="page_limit" type="numeric" default="10">
<cfset var startRow = (arguments.page * arguments.page_limit) - arguments.page_limit + 1>
<cfset var endRow = startRow + arguments.page_limit>
<cfset var util = createObject("component", "test.jsonUtil")>
<cfset var getClientsByName = "">
<cfset var results = structNew()>
<cfset var clients = arrayNew(1)>
<cfset var elem = "">
... run db query ....
<!--- use default keys: "id" and "text" --->
<cfloop query="getClientsByName" startRow="#startRow#" endRow="#endRow#">
<cfset elem = structNew()>
<cfset elem["id"] = getClientsByName.client_id>
<cfset elem["text"] = getClientsByName.client_name>
<cfset arrayAppend(clients, elem)>
</cfloop>
<!--- package the results into a structure --->
<cfset results["total"] = getClientsByName.recordCount>
<cfset results["clients"] = clients>
<cfcontent type="application/json" reset="true">
<cfoutput>#util.serializeJSON(results)#</cfoutput><cfabort />
</cffunction>
return { results: data.clients, more: more };
return { results: data, more: more };