Используя запрос в качестве аргумента для функции
Я хотел бы передать запрос в качестве параметра функции.
Согласно документам Вы можете указать запрос в качестве типа аргумента.
Однако, когда я пытаюсь сделать это:
<cfquery name="share_types_query" datasource="phonebook">
SELECT share_loan_type, share_loan_description
FROM shareloantypes
WHERE share_loan='S'
ORDER BY share_loan_type
</cfquery>
<cfscript>
phonebookQuery(share_types_query, "SHARE_TYPES");
</cfscript>
<!--function to take a query and turn the result into a JSON string-->
<cffunction name="phonebookQuery" access="public" returnType="void">
<cfargument name="query" type=query required="yes">
<cfargument name="jsVar" type=string required="yes">
<cfset json = "[ "/>
<cfloop query="query">
<cfset json = json & "{ "/>
<cfset i=1/>
<cfloop list="#arrayToList(query.getColumnList())#" index="col">
<cfset json = json & '"#col#"' & ": "/>
<cfset json = json & '"' & query[col][currentRow] & '"'/>
<cfif i lt ListLen(query.columnList)>
<cfset json = json & ", "/>
</cfif>
<cfset i= i+1/>
</cfloop>
<cfset json = json & " }"/>
<cfif currentRow lt recordCount>
<cfset json = json &","/>
</cfif>
</cfloop>
<cfset json = json & " ]"/>
<script type="text/javascript">
<cfoutput>
var #toScript(json,Arguments.jsVar)#;
</cfoutput>
</script>
</cffunction>
Я получаю следующую ошибку:
The parameter SELECT to function phonebookQuery is required but was not passed in.
Я очень новичок в CF и я нахожусь на CF MX 7.
1 ответ
Решение
Версия вопроса, которую я разместил, на самом деле не была точной копией функции в исходном файле. Функция в источнике фактически имела некоторые <cfargument>
теги (первый из которых name="select"
) that were commented out.
I was commenting them like this: <!-- a comment -->
which triggered the appropriate response in my syntax highlighter, but ColdFusion was still trying to execute the lines.