我有一个 CFC 文件,它处理我从应用程序发送的所有电子邮件(使用 Coldfusion8)。
我正在使用 CFINVOKE 调用此 CFC 中的相应函数,并传递一个包含所有用户数据的结构,如下所示:
<cfscript>
var User.data = {};
User.data.name = "John Doe";
User.data.email = "john@doe.com";
...
</cfscript>
// call mailer
<cfinvoke component="mailer_user" method="say_hi">
<cfinvokeargument name="userData" value="#User.data#">
</cfinvoke>
在我的 mailer.cfc 里面
<cffunction name="say_hi" access="public" output="false">
<cfargument name="userData" type="struct" required="true" />
....
出于某种原因,这现在失败了,如果我将字段作为cfargument单独传递,我只能让它工作,这很痛苦,因为我传递了很多数据。
问题:如何使用argumentCollection使其工作。
即使我这样 CFINVOKE:
<cfinvoke component="mailer_user" argumentcollection="#User.data#" method="say_hi"></cfinvoke>
它仍然没有做任何事情。我在 cfinvoke 之前和之后设置输出标志,以及在进出的“say_hi”函数内部。我只是在 CFINVOKE 之前拿到了旗帜。
旁注:这都是通过 AJAX 完成的,如果我的 CFC 在某处出现错误,我只会返回 success="false"。我只在系统上远程工作,所以无法在CFADMIN中设置AJAX调试