Coldfusion 在字段中使用带逗号的自动完成

Coldfusion 在字段中使用带逗号的自动完成,coldfusion,autocomplete,Coldfusion,Autocomplete,我正在尝试使用带有逗号的字段的autocomplete。当我键入逗号时,它将忽略它,并且不会返回任何内容。到目前为止,我有: index.cfm <!--- A simple form for auto suggest ---> <cfform action="autosuggest.cfm" method="post"> Artist: <cfinput type="text" name="artist" size="50" autosuggest="c

我正在尝试使用带有逗号的字段的autocomplete。当我键入逗号时,它将忽略它,并且不会返回任何内容。到目前为止,我有:

index.cfm

<!--- A simple form for auto suggest --->
<cfform action="autosuggest.cfm" method="post">
  Artist: 
  <cfinput type="text" name="artist" size="50" autosuggest="cfc:autosuggest.findartist({cfautosuggestvalue})" autosuggestminlength="4" maxresultsdisplayed="5" /><br /><br />
</cfform>

艺术家:


autosuggest.cfc

<cfcomponent output="false">

    <!--- Lookup used for auto suggest --->
    <cffunction name="findartist" access="remote" returntype="string">
        <cfargument name="search" type="any" required="false" default="">

        <!--- Define variables --->
        <cfset var local = {} />

        <!--- Query Location Table --->
        <cfquery name="local.query" datasource="#application.datasource#" >
            select      DISTINCT artist
            from        items
            where       artist like <cfqueryparam cfsqltype="cf_sql_varchar" value="#ucase(arguments.search)#%" />
            order by    artist
        </cfquery>

        <!--- And return it as a List --->
        <cfreturn valueList(local.query.artist)>
    </cffunction>

</cfcomponent>

选择独特的艺术家
从项目
艺术家喜欢哪里
艺术家订购
当我尝试搜索例如Brown、James时,它不会返回任何内容。我需要在其中输入什么才能返回带逗号的结果


谢谢

一个选项是让函数返回数组,而不是字符串。那么分隔符就不是问题了

   <cffunction name="findartist" access="remote" returntype="array">
      ...
      <cfreturn listToArray(valueList(local.query.artist, chr(30)), chr(30))>
   </cffunction>

...
更新:

正如Raymond指出的,在CF端避免分隔符问题的唯一可靠方法是不使用它们。而是通过循环查询来构建数组,即:

   <cffunction name="findartist" access="remote" returntype="array">
       ...
       <cfset local.arr = []>
       <cfloop query="local.query">
           <cfset arrayAppend(local.arr, local.query.artist)>
       </cfloop>

       <cfreturn local.arr>
   </cffunction>

...

好的,你可能想用相关的编程语言和工具来标记你的问题。@Kay并且也请发布你的呈现HTML。如果你用逗号将你的术语直接放入查询中,它会返回结果吗?如果OP正在读这篇文章,请注意使用chr(30)作为分隔符。这就解决了数据中的逗号问题。为什么还要用分隔符呢?只需循环查询并创建一个数组。这样你就不必担心数据中的chr(30)(尽管这可能永远不会发生)。@RaymondCamden-没有特别的原因。我只是处于一种反循环的情绪;-)。但约定的循环更为防弹。