我刚刚遇到CF的不需要的“功能”,它涉及从返回到autosuggest输入的值中删除前导零。我以为我可以在值之前添加一些字符并在返回后删除它们,但是遇到了障碍。我正在修改现有的函数,如下所示:
<cffunction name="lookupTailNumber" access="remote" returntype="Array" >
<cfargument name="search" type="any" required="false" default="">
<!--- Define variables --->
<cfset var data="">
<cfset var result=ArrayNew(1)>
<!--- Do search --->
<cfquery name="data">
SELECT DISTINCT SERIAL_NUMBER AS list
FROM aircraft_status
WHERE SERIAL_NUMBER LIKE '%#trim(ARGUMENTS.search)#%'
ORDER BY list
</cfquery>
<!--- Build result array --->
<cfloop query="data">
<cfset ArrayAppend(result, list)>
</cfloop>
<!--- And return it --->
<cfreturn result>
</cffunction>
返回一个如下所示的响应:
[3001.0,1.00002E8,1.00002001E8,1.00002002E8,1.00002003E8,1.00002004E8]
或采用JSON格式:
0 3001
1 100002000
2 100002001
3 100002002
4 100002003
所有结果都被删除了前导零。我已经尝试修改查询以在每个值前添加一个字符:
<cfquery name="data">
SELECT DISTINCT (concat(' ', SERIAL_NUMBER)) AS list
FROM aircraft_status
WHERE SERIAL_NUMBER LIKE '%#trim(ARGUMENTS.search)#%'
ORDER BY list
</cfquery>
返回:
[" 0000003001"," 0100002000"," 0100002001"," 0100002002"," 0100002003"," 0100002004"]
所以你认为一切都很好,对吧?问题:返回时,autosuggest字段中没有显示任何值!我也试过预先添加不同的字符,包括数字,没有运气。查看yui-ac-bd div中的元素&gt; ul,none没有填充或显示。
输入声明如下:
<cfinput style = "width:300px;"
class = ""
type="text"
name="txtvalueFilter"
maxlength="15"
id="txtvalueFilter"
autosuggest="cfc:mycfcpath({cfautosuggestvalue})"
/>
思想?
答案 0 :(得分:1)
尝试附加一个空格,因此内置的JSON序列化程序会将其视为字符串而不是JSON中的int。
另外,请确保已为您的CF版本安装了最新的修补程序。
我想知道你是否需要“构建结果数组”。如果您返回data.list
会怎样?或者,也许使用ListToArray(valueList(data.list))
?