Jquery 如何在coldfusion中使用select2无限滚动?

Jquery 如何在coldfusion中使用select2无限滚动?,jquery,coldfusion,jquery-select2,Jquery,Coldfusion,Jquery Select2,给出的示例没有很好地解释,我不知道后端发生了什么事情来产生这些结果 编辑:我已更改我的cfc,以从查询中返回数量有限的行。我还附加了总行数,希望可以从data.total中的ajax调用它 氟氯化碳: 我相信我需要使用cfarguments page和page_limit来修改我的sql,但我不知道如何处理它们。我应该如何限制按页返回的行,然后添加下一页的行 js: 如果有人能找到一本关于select2如何合并无限滚动的教程,那就太好了 我相信我的问题在于ajax调用的结果部分,但我不确定

给出的示例没有很好地解释,我不知道后端发生了什么事情来产生这些结果

编辑:我已更改我的cfc,以从查询中返回数量有限的行。我还附加了总行数,希望可以从data.total中的ajax调用它

氟氯化碳:

我相信我需要使用cfarguments page和page_limit来修改我的sql,但我不知道如何处理它们。我应该如何限制按页返回的行,然后添加下一页的行

js:

如果有人能找到一本关于select2如何合并无限滚动的教程,那就太好了

我相信我的问题在于ajax调用的结果部分,但我不确定。

服务器端 后端页面必须返回包含两个值的JSON结构:

找到的记录总数 结果就是一系列的结构 默认情况下,插件希望结果结构包含两个键:id和text。从技术上讲,您可以使用不同的密钥名。但是,如果使用不同的名称,则必须编写自定义函数来格式化结果,即formatResult和formatSelection

样本:

代码:

。。。而不是

          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 };