gpt4 book ai didi

jquery - 从 Coldfusion 查询形成 json 以用于 jquery 自动完成

转载 作者:行者123 更新时间:2023-12-01 02:14:33 25 4
gpt4 key购买 nike

我被难住了。我有一个现有的自动完成功能,当从 ColdFusion 自动建议输入调用时该功能可以工作。现在,我正在尝试将页面转换为使用 jQuery 自动完成输入,但无法使其工作。这是 autosuggest.cfc 中的现有函数:

<cffunction name="lookupSerialNumber" 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
FROM myTable
WHERE SERIAL_NUMBER LIKE '%#trim(ARGUMENTS.search)#%'
ORDER BY SERIAL_NUMBER
</cfquery>

<!--- Build result array --->
<cfloop query="data">
<cfset ArrayAppend(result, list)>
</cfloop>

<!--- And return it --->
<cfreturn result />
</cffunction>

当我在输入“01”后从自动完成输入中调用它时,控制台会显示如下响应:

   ["0000003001","0100002000","0100002001","0100002002","0100002003","0100002004",7300000100,7300000101,7300000102,7300000103,7300000104,7300000105,7300000107,7300000108,7300000109,7300000110,7300000111,7300000112]

请注意,前六个响应位于双引号内,而其余则不在双引号内。自动完成显示前六个响应,但不显示其余响应。

这是我的第一个问题。第二个是我希望将响应注入(inject)到输入的文本和值中;目前,仅文本显示响应。我并不感到惊讶,因为我只返回一个值。但是,我不知道如何实现这一点。

我尝试使用解析函数初始化自动完成,如下所示:

$(document).ready(function(){
$('#myInputID').autocomplete(
{source: function(request, response) {
$.ajax({
url: "cfc/autoSuggest.cfc?method=lookupSerialNumber>&returnformat=json",
dataType: "json",
data: {
search: request.term,
maxRows: 10
},
success: function(data) {
response(data);
}
})
},
parse: function(data){
return $.map(data, function(item) {
return { data: item, value: item, result: item };
});
}
});
});

但这没有任何效果。由于解析函数不在自动完成 API 中,所以我在这里很盲目。

我认为这些问题足够相关,不能将它们分成两个问题;如果您认为我应该这样做,请告诉我。一如既往,谢谢。

最佳答案

将查询结果放入结构中并将其添加到数组中。然后转成json。自动完成功能需要返回 json 和 labelvalue 字段或两者。这是一个例子:

<cffunction name="lookupSerialNumber" access="remote" returntype="String" >
<cfargument name="search" type="any" default="">

<!--- Define variables --->
<cfset var data="">
<cfset var result=ArrayNew(1)>
<cfset var returnStruct = "">


<!--- Do search --->
<cfquery name="data">
SELECT DISTINCT SERIAL_NUMBER
FROM myTable
WHERE SERIAL_NUMBER LIKE <cfqueryparam value="%#trim(ARGUMENTS.search)#%"
cfsqltype="cf_sql_varchar">

ORDER BY SERIAL_NUMBER
</cfquery>

<!--- Build result array --->
<cfloop query="data">
<cfset returnStruct = StructNew() />
<cfset returnStruct["label"] = SERIAL_NUMBER />

<cfset ArrayAppend(result,returnStruct) />
</cfloop>

<!--- And return it --->
<cfreturn serializeJSON(result) />
</cffunction>

如果您使用的任何版本的 CF 中都提供了 serializeJSON 函数,您就可以使用该函数。如果没有,请手动构建 json 字符串。

这是一个叹息:http://www.jensbits.com/2010/03/18/jquery-ui-autocomplete-with-coldfusion/

关于jquery - 从 Coldfusion 查询形成 json 以用于 jquery 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7814575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com