我有一个测试代码,至少部分可以使用单击时使用 ajax 调用从 cfc 返回数据
这是代码:
<script type="text/javascript">
$(document).ready(function(){
$('#showteams').click(function() {
$.ajax({
url: "test.cfc?method=getAllTeams&returnformat=JSON",
dataType: 'json',
data: { startrow: "10", endrow: "10" },
success:function(data) {
$.each(data, function(i,team){
$('#teamList').append('<li><a href="#">' + team[0] + '</a> this is the username ' + team[1] + ' ----- name --- ' + team[2] + '');
});
}});
});
$('#teams').show();
$('#teamList').fadeIn(1200);
$(this).attr('disabled', 'disabled');
});
</script>
和一个简单的 cfc(最后一个会更复杂,但也足够灵活,可以在需要时进行更改)
<cfcomponent output="false">
<cffunction name="getAllTeams" access="remote" output="false" returntype="any">
<cfargument name="startrow" required="yes" type="any">
<cfargument name="endrow" required="yes" type="any">
<cfargument name="cat" required="no" type="any" hint="add later with the rest of the code">
<cfquery name="qGetAllTeams" datasource="datasource">
SELECT ID,NAME,LASTNAME
FROM table
</cfquery>
<cfset one=arraynew(1)>
<cfset two=arraynew(1)>
<cfloop query="qGetAllTeams" startrow="#arguments.startrow#" endrow="#arguments.endrow#">
<cfset one[1]=ID>
<cfset one[2]=NAME>
<cfset one[3]=LASTNAME>
<cfset ArrayAppend(two,#one#)>
</cfloop>
<cfreturn two />
</cffunction>
</cfcomponent>
上面的代码有效,但只显示前 10 条记录,因为值是在 javascript 中手动设置的 - data: { startrow: "10", endrow: "10" }
虽然我可以仅使用服务器端代码轻松构建此页面或任何类型的分页,但整个 javascript 在这里让我感到困惑并且不知道如何对其进行排序。我在 cfc 中尝试过什么,以数学方式计算要在 cfloop 中使用的 startrow 和 endrow(目前我只是把 startrow="#arguments.startrow#" endrow="#argumentsendrow#" 虽然这应该明显改变:))它返回只有前 10 条记录,因为 startrow 在 javascript 中设置为 10。我在这里肯定缺少一些基本逻辑,非常感谢您对此提供的帮助。