所以我有一个使用ColdFusion的项目,它有一个带下拉列表的表单。
See example: http://jsfiddle.net/mwoods98/KXmNK/
选择下拉列表后,我需要进行的是ajax调用,调用ColdFusion cfc,返回信息以填写下拉列表中的表单。
使用上面的小提琴作为示例,如果用户选择“2”,则名称字段将具有Bob,202 Fake Street和111-555-1234。如果他们选择“3”,他们将获得从CFC(数据库)返回的任何其他内容。
CFC只会有一个方法调用,可以根据通过下拉列表提交的数字值来获取信息。
任何帮助都将不胜感激。
由于
答案 0 :(得分:3)
如果您使用的是jQuery,可以使用jquery中内置的ajax函数来调用CFC并返回结果并填充字段。顺便说一句,如果你想这样做,在字段上放置ID将非常有帮助。
$.ajax({
type: 'get',
url: 'pathToMy.cfc',
data: {method:'getNameAddressAndNumberFromID'
, myID : valueOfItemSelectedInDropDown
},
dataType: 'json',
async: false,
success: function(result){
$('#myNameInput').val(result.NAME);
$('#myNameInput').val(result.ADDRESS);
$('#myNameInput').val(result.NUMBER);
}
});
假设您有一个名为'pathToMy.cfc'的CFC,其方法为'getNameAddressAndNumberFromID',并且您在输入上有一个ID,如名称:
<input name="name" id="myNameInput" type="Text">
该方法的结果可以返回查询中的名称,地址和数字。将此信息作为JSON返回将非常有用。
这应该让你走上正轨,祝你好运。
答案 1 :(得分:2)
在我的示例中,我有一组依赖于分层的下拉菜单(Coldbox 3.5 +,CF9)
使用bindCFC和cfajax,这里是前两个下拉列表的示例,第二个下拉列表依赖
我的观看代码段
<cfform>
<cfselect name="groups" id="groups" bind="cfc:#getSetting('AppMapping')#.model.dynform.getGroups()"
bindOnLoad="Yes"
display="group_name"
value="group_id" />
<cfselect name="events" id="events" selected="#form.event_id#"
bind="cfc:#getSetting('AppMapping')#.model.dynform.getEventsByGroup({groups})"
display="event_name"
value="event_id"
queryPosition="below">
</cfform>
我的模型(dynform)摘要
<cffunction name="getGroups" access="remote" output="false" returntype="query">
<cfset var qGroups = "">
<cfquery datasource="#application.DSN#" name="qGroups">
SELECT
egc.nd_event_group_id group_id,
egc.short_desc group_name
FROM event_group_code egc
WHERE egc.status_code = 'A'
ORDER BY egc.sort_order
</cfquery>
<cfreturn qGroups>
</cffunction>
<cffunction name="getEventsByGroup" access="remote" output="false" returntype="query">
<cfargument name="event_group_id" type="string" required="true">
<cfset var qEventsByGroup = "">
<cfquery datasource="#application.DSN#" name="qEventsByGroup">
SELECT ec.event_id,
ec.FULL_DESC as event_name
FROM events ec
WHERE ec.event_group_id = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.event_group_id#">
</cfquery>
<cfreturn qEventsByGroup>
</cffunction>
虽然上述方法可行,但我最终放弃了jQuery / ajax返回JSON方法。原因:
Coldbox way =处理程序应该是工作,而不是视图
CFajax / cfselect比jQuery ajax慢,而且选项少。 (如果我想要一个多选框?或者返回三个数据属性而不是两个?)
我不想在我的视图中使用cfform标记,cfselect要求
如果需要,我可以发布jQuery ajax方式,但我想我回答了原来的问题
答案 2 :(得分:0)
最简单的方法是使用cfselect的bind属性。但是,无论您使用此方法还是滚动自己的jquery,请执行以下操作:
这样,如果你有任何问题从ajax调用它,你就会知道cfc不是错误的。