您将如何根据表单选择元素的值执行数据库查询?

vol*_*one 9 javascript ajax coldfusion jquery cfml

我使用ColdFusion作为我的应用程序服务器和SQL Server用于数据库.我有一个列出了许多车辆的选择表单元素:Volvo S60,BMW M6,VW Jetta.

根据用户选择的车辆,我需要我的网页执行数据库查询,以找出他们选择的车辆类型,例如SUV,Coupe,Convertible.根据从数据库返回的"类型",数据库将返回适合该车辆类型的选项列表.我的数据库表可以根据车辆下拉值来做到这一点,这样一切都很好.

现在,我想现在列出该车辆"类型"的可用选项作为一组复选框.这样做应该是循环数据库结果集并为每一行生成一个复选框的简单情况.

我想这样做而不刷新页面.如何从下拉列表中动态获取值,将此值传递给数据库,返回结果然后显示相应的复选框?

Dan*_*cuk 4

我在之前的评论中提到,在 ColdFusion 中执行此操作的最简单方法是将表单元素绑定到 cfc 方法。在谷歌上搜索“cfinput bind”会找到很多例子,但由于我被要求提供答案,我将展示一个我曾经写过的例子。这并不完全是OP想要的,但它显示了总体思路。它将根据另一个文本框的值填充一个文本框。

请注意,cfc 和 cfm 文件必须位于同一目录中。

.cfm 文件

<!--- When you type a clinic code here: ---->
<div id="clinicCodeInput" class="hidden">
Clinic Code <input name="clinicCode" type="text" />
</div>

<!---- A query result will appear here ---->
<div id="clinicNameFromPatientSatisfaction" class="hidden">
Patient Satisfaction Name <cfinput type="text" 
name="NameOfClinic" 
bind="cfc:PatientSatisfactionClinics.GetClinicName({clinicCode})" 
bindonload="no"> 
</div>
Run Code Online (Sandbox Code Playgroud)

.cfc 文件

<cffunction name="GetClinicName" access="remote" returntype="string">
<cfargument name="clinicCode" type="string" required="yes">
<cfscript>
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;
</cfscript>

<cfif clinicCodeAsInt gt 0>
<cfquery name="clinicName" datasource="dw">
select name
from patient_satisfaction_clinic
where clinic_code = 
<cfqueryparam cfsqltype="cf_sql_integer" value="#clinicCodeAsInt#">
</cfquery>

<cfif clinicName.recordcount gt 0>
<cfset returnString = clinicName.name[1]>
</cfif>
</cfif>  <!--- clinicCodeAsInt gt 0 --->

<cfreturn returnString>

</cffunction>
Run Code Online (Sandbox Code Playgroud)