您将如何根据表单选择元素的值执行数据库查询?
我使用ColdFusion作为我的应用程序服务器和SQL Server用于数据库。 我有一个选择的表格元素,列出了许多车辆: Volvo S60
, BMW M6
, VW Jetta
。
根据用户选择的车辆,我需要我的网页执行数据库查询,以找出他们选择的车辆类型,例如SUV,Coupe,Convertible。 根据从数据库返回的“类型”,数据库将返回适合该车辆类型的选项列表。 我的数据库表可以根据车辆下拉值来做到这一点,这样一切都很好。
现在,我想现在列出该车辆“类型”的可用选项作为一组复选框。 这样做应该是循环数据库结果集并为每一行生成一个复选框的简单情况。
我想这样做而不刷新页面。 如何从下拉列表中动态获取值,将此值传递给数据库,返回结果然后显示相应的复选框?
我在之前的评论中提到过,在ColdFusion中执行此操作的最简单方法是将表单元素绑定到cfc方法。 关于“cfinput bind”的谷歌搜索将引出很多例子,但是由于我被要求提供答案,我将展示我曾经写过的一个例子。 这不是OP想要的,但它显示了一般的想法。 它将根据另一个文本框的值填充一个文本框。
请注意,cfc和cfm文件必须位于同一目录中。
.cfm文件
Clinic Code Patient Satisfaction Name
.cfc文件
var clinicName = QueryNew("a"); var returnString = "No Record for Clinic Code " & arguments.clinicCode & "."; var clinicCodeAsInt = 0; if (isNumeric(arguments.clinicCode) and round(arguments.clinicCode) is arguments.clinicCode) clinicCodeAsInt = arguments.clinicCode; select name from patient_satisfaction_clinic where clinic_code =
在
的Adobe ColdFusion文档中,您需要做一些示例,该文档演示了必要的技术。 这并不能完全符合您的要求,但这需要将标记从纯文本更改为复选框以满足您的要求。 这里重现的代码太多了,但关键是你使用
在客户端的JS和服务器端的CFC之间建立代理,以使JS能够从服务器中检索数据。
使用
无需滚动自己的JS AJAX处理,或使用JQuery(等)来执行此操作。 也就是说,手工完成并不太难……使用该文档中演示的技术将CF与前端代码完全分离是很容易的(不使用CF来做客户端的好例子) – 这些东西)…这一切只是归结为让事件处理程序监听相关事件,然后以某种方式将AJAX调用回服务器以获取数据,然后在
或其他东西中将其打包。 在这种情况下,CF只依赖提供代理位:你仍然需要自己做其余的事情。
好的,这是我到目前为止似乎对我有用的事情。 但我要回顾亚当和丹的善意答案。
我在Vehicle.cfm页面上创建了一个表单,其中包含所有表单元素,复选框除外。
我创建了一个名为vehicleOptions.cfm的新CFM模板,它接受一个参数,运行一个SQL查询,然后输出实际的HTML来创建复选框。
然后我在Vehicle.cfm页面上以我的forms前往该区域,我希望我的复选框出现并输入:
‘Model’是我表单上元素的ID,它包含用户选择的车辆的值。 因此,现在每当用户更改下拉列表中的模型时,该区域每次都会使用不同的复选框进行更新。 它真的很棒,我没有写一行Javascript!
这个解决方案适用于我想要的,但我猜它不是ColdFusion AJAX最优雅的用途? 正如我所说,我将审查答案,并尝试找出更好的解决方案。 感谢各位CF开发人员的帮助!
这很简单。 每个选项都应该有编码的值,例如
然后,您使用jQuery。
$('#go').on('click', function() { var car = $('.car:selected').val(); // make ajax call here });
这是一个有效的例子: http : //jsfiddle.net/Yxmjk/ 。 它没有演示AJAX调用,但它演示了如何获取AJAX调用中包含的数据。