引导预先输入调用ColdFusion

Bootstrap typeahead call to ColdFusion

本文关键字:调用 ColdFusion 输入      更新时间:2023-09-26

我试图用Typeahead.js做一个简单的测试,它从一个coldfusion组件中获取它的数据,该组件返回一个简单的JSON字符串和数据。

这是我的ajaxctrl。cfc

<cfcomponent output="false">
    <cffunction name="GetParams" access="remote" output="false">
        <cfset objData = [
            {   PARAMCODE = "SYSTEM_PARAM_1", 
                PARAMVAL = "FALSE" 
            },
            {   PARAMCODE = "SYSTEM_PARAM_2",            
                PARAMVAL = true 
            },
            {   PARAMCODE = "SYSTEM_PARAM3",             
                PARAMVAL = "1003" 
            },
            {   PARAMCODE = "SYSTEM_PARAM4",             
                PARAMVAL = 1004 
            }
        ] />
        <cfreturn objData >
    </cffunction>
</cfcomponent>

因此,当我尝试在浏览器中访问http://localhost/foo/bar/AjaxCtrl.cfc?method=GetParams时,我得到如下输出:

[{"PARAMCODE":"SYSTEM_PARAM_1","PARAMVAL":false},{"PARAMCODE":"SYSTEM_PARAM_2","PARAMVAL":true},{"PARAMCODE":"SYSTEM_PARAM_3","PARAMVAL":1003},{"PARAMCODE":"SYSTEM_PARAM_4","PARAMVAL":1004}]

这是我的javascript文件

// constructs the suggestion engine
var engine = new Bloodhound({
  datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.PARAMCODE); },
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  prefetch: "http://localhost/dev/test/djb/AjaxCtrl.cfc?method=GetParams"
  }
);
// kicks off the loading/processing of `local` and `prefetch`
engine.initialize();
$( "input.typeahead" ).typeahead({
  hint: true,
  highlight: true,
  minLength: 1
},
{
  name: 'parameters',
  displayKey: 'PARAMCODE',
  source: engine.ttAdapter()
});
到目前为止,我只能使它与LOCAL硬编码数据示例一起工作。我尝试过的所有例子都不起作用,无论是预取还是远程取。我做错了什么?

我通过将returnFormat="JSON"添加到我的<cffunction>来解决它,否则它将通过"wddxpacket"发送数据,并且Typeahead显然不能直接开箱处理