1

クエリをパラメーターとして関数に渡したいと思います。

ドキュメントによると、クエリを引数の型として指定できます。

ただし、これを実行しようとすると:

<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 を使用しています。

4

1 に答える 1

0

私が投稿した質問のバージョンは、実際にはソース ファイル内の関数のカーボン コピーではありませんでした。ソース内の関数には、実際にはコメント アウトされたいくつかの<cfargument>タグ (最初のタグは) がありました。name="select"

私は次のようにコメントしてい<!-- a comment -->ました。シンタックス ハイライターで適切な応答がトリガーされましたが、ColdFusion はまだ行を実行しようとしていました。

于 2015-05-21T13:27:58.847 に答える