http://ivaynberg.github.com/select2/#infinite给出的例子解释得不是很好,我不知道后端发生了什么来产生这些结果。
编辑:我已更改我的 cfc 以从查询中返回有限数量的行。我还附加了总行数,希望能从data.total
.
氟氯化碳:
<cffunction name="GetClientsByName"
access="remote"
returntype="string"
output="true"
hint="get clients from search term">
<cfargument name="name" type="string" required="yes">
<cfargument name="page" type="numeric">
<cfargument name="page_limit" type="numeric">
<cfset var start = (arguments.page * arguments.page_limit) - arguments.page_limit + 1>
<cfset var end = start + arguments.page_limit>
<cfset var util = createObject("component", "/surveymanagement/JSONUtil")>
<cfset var results = arrayNew(1)>
<cfset var elem = "">
<cfset var total = "">
<cfquery name="GetClientsByName" datasource="#application.dsn#">
SELECT client_id, client_name
FROM Clients
WHERE client_name LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#arguments.name#%">
ORDER BY client_name
</cfquery>
<cfset total = structNew()>
<cfset total["total"] = GetClientsByName.RecordCount>
<cfloop query="GetClientsByName" startrow="#start#" endrow="#end#">
<cfset elem = structNew()>
<cfset elem["id"] = GetClientsByName.client_id>
<cfset elem["text"] = GetClientsByName.client_name>
<cfset arrayAppend(results, elem)>
</cfloop>
<cfset arrayAppend(results, total)>
<cfcontent type="application/json" reset="true"><cfoutput>#util.serializeJSON(results)#</cfoutput><cfabort />
</cffunction>
我相信我需要使用 cfarguments 页面和 page_limit 更改我的 sql,但我不知道如何处理它们。我应该如何限制按页返回的行,然后添加下一页的行?
js:
$(".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 };
}
}
});
如果有人找到关于 select2 如何结合无限滚动的教程,那也很好。
我相信我的问题在于results
ajax 调用部分,但我不确定。