私は ColdFusion を初めて使用し、Ajax について学び始めたばかりです。私が持っている質問は、Web で 2 つのプルダウン メニューを実装するためのクールなコーディングを見つけたということです。ただし、目標は、選択クエリからプルダウン リスト内のすべての値を取得することです。
先ほど学んだバインド機能を使用しています。最初のプルダウンのすべてが正しくプルされています。しかし、問題は2つ目です。AJAX ロガーから取得しているエラーは、"Error invoking: Error Executing Database Query"
アドバイスをいただければ幸いです。また、よろしくお願いいたします。
select.cfc
<cfcomponent output="false">
<!--- Get array of Catagory Description types --->
<cffunction name="cat_description" access="remote" returnType="array">
<!--- Define variables --->
<cfset var data="">
<cfset var result=ArrayNew(2)>
<cfset var i=0>
<!--- Get data --->
<cfquery name="getServiceCat" datasource="SOME_DATABASE">
SELECT DISTINCT CAT_DESC
FROM service_table
ORDER BY CAT_DESC
</cfquery>
<!--- Convert results to array--->
<cfloop index="i" from="1" to="#getServiceCat.recordcount#">
<cfset result[i][1]=getServiceCat.CAT_DESC[i]>
<cfset result[i][2]=getServiceCat.CAT_DESC[i]>
</cfloop>
<!--- And return it --->
<cfreturn result>
</cffunction>
<!--- Get Service Type by Cat description type --->
<cffunction name="getServiceType2" access="remote" returnType="array">
<cfargument name="CAT_DESC" type="string" required="true">
<!--- Define variables --->
<cfset var data="">
<cfset var result=ArrayNew(2)>
<cfset var i=0>
<!--- Get data --->
<cfquery name="getServiceType2" datasource="SOME_DATABASE" dbtype="query">
SELECT DISTINCT com_service_code, report_desc
FROM service_table
WHERE CAT_DESC = #ARGUMENTS.CAT_DESC#
ORDER BY report_desc
</cfquery>
</cfif>
<!--- Convert results to array --->
<cfloop index="i" from="1" to="#getServiceType2.recordcount#">
<cfset result[i][1]=getServiceType2.com_service_code[i]>
<cfset result[i][2]=getServiceType2.report_desc[i]>
</cfloop>
<!--- And return it --->
<cfreturn result>
</cffunction>
</cfcomponent>
上記は、すべてのクエリを処理する cfc です。このソリューションの主な理由の 1 つは、フォーム内で必要なコードが単純であることです。
...
<td>Select Category: <cfselect name="catdesc"
bind="cfc:select.cat_description()"
bindonload="true"/><br />
</td>
...
<td>Select Service: <cfselect name="service"
bind="cfc:select.getServiceType2({catdesc})"
bindonload="false"/>
</td>
クエリエラーの解決策を見つけるために、ほぼ2日間検索しました。クエリが SQL で機能することはわかっているので、問題は AJAX に関係しており、2 番目のプルダウンの WHERE 句が正しく実装されていないと考えています。
繰り返しますが、アドバイスや提案は素晴らしいでしょう。さらに、このソリューションを別の方法で行う場合は、それも試していただければ幸いです。私が述べたように、私はこの言語に非常に慣れていません。わずか2週間。