我正在使用ColdFusion Server版本8,0,0,176276。
我试图通过cfc添加一个自动建议的表单字段,异步填充。我使用http://www.forta.com/blog/index.cfm/2007/5/31/coldfusion-ajax-tutorial-1-autosuggest获取灵感和语法。
如果我使用静态查询,autosuggest字段工作正常(如Forta的第一个例子)。未在表单字段中使用时,cfc成功返回数组。
但是当我使用cfc进行自动提示时,没有提供任何建议。
我无法通过"查看来源,"来查看输入字段的内容。但如果我这样做,那就检查元素"在Chrome的这个领域,我可以看到一个div与class =" yui-ac-bd"还有一个ul。使用cfc时ul中的列表项为空,而当我使用静态查询时,列表项包含数组成员。
这是我页面上的代码:
<cfform>
<cfinput type="text" name="JobP"
autosuggest="cfc:autosuggest.AutoSuggest({cfautosuggestvalue})">
</cfform>
这是autosuggest.cfc:
<cfcomponent output="false" >
<cffunction name="AutoSuggest" access="remote" returntype="array">
<cfargument name="ObjectType" required="false" default="JOBP">
<cfset var result=ArrayNew(1)>
<cfquery name="Objects" datasource="UC4MP">
SELECT oh_name
FROM uc4.oh
WHERE oh_otype = '#ObjectType#'
AND oh_deleteflag = 0
AND oh_lastdate > sysdate - 90
AND oh_client = 1000
and oh_name like 'A%'
ORDER BY oh_name
</cfquery>
<cfloop query="Objects">
<cfset ArrayAppend(result,oh_name)>
</cfloop>
<cfreturn result>
如果我将以下代码放在我的页面上,它会输出具有所需内容的数组:
<cfinvoke component="autosuggest" method="AutoSuggest" returnVariable="result">
cfdump var="#result#">
我还没有使用jQuery;我的大部分关于CF autosuggest的谷歌搜索结果都涉及jQuery,而且我还没有能够通过它们来解决我的问题。以防万一你的建议。
答案 0 :(得分:1)
谢谢大家的意见!我不知道有一个单独的ajax调试器,其输出立即使问题清楚:
info:http: Invoking CFC: /rd/autosuggest.cfc , function: AutoSuggest ,
arguments: {"ObjectType":"A"}
我的cfc参数不包含autosuggest本身,因此传递给输入字段的字符串被解释为“ObjectType”(第一个参数)并在查询中使用。由于没有记录,其中oh_otype ='A',结果始终为空。
我将cfc的参数更新为
<cfargument name="ObjectType" required="yes" default="JOBP">
<cfargument name="autosuggest" required="yes">
并调用
<cfinput type="text" name="JobP"
autosuggest="cfc:autosuggest.AutoSuggest('JOBP',{cfautosuggestvalue})">
......现在效果很好。
答案 1 :(得分:0)
如果我在几年前做到这一点时没记错,我必须在Apacahe中创建一个虚拟目录,并使用以下指令设置permisions。如果您在该环境中工作,则可以将其应用于IIS。这应该适合你。
Alias /CFIDE "/opt/coldfusion9/wwwroot/CFIDE"
<Directory "/opt/coldfusion9/wwwroot/CFIDE">
allow from all
Options FollowSymLinks
从那时起,我一直在使用bootstrap 2中的类型头javascript。更干净,更容易风格。您仍然可以使用您的cfc来调用数据,我将包含代码以清除它的类型。
<cfinvoke component="autosuggest" method="AutoSuggest" returnVariable="result">
<cfset mylist = ArrayToList(result, ",")>
<cfset mylist=ValueList(ShowKey.keyword)>
<cfset mylist = jSStringFormat(#mylist#)>
<input name="keyword" id="keyword" type="text" data-provide="typeahead" data-items="10" data-source='["<cfoutput>#replace(mylist,',','","','ALL')#</cfoutput>"]'/>