我迷茫了。
我通过 Ajax 发布到 Coldfusion8 cfc,虽然它在我的本地计算机上运行良好,但在实时服务器上我无法调用此 CFC 或其扩展 CFC 中的任何函数。
我想这样做:
<cfset LOCAL.response = THIS.commit() />
如果我转储:
<cfdump output="e:\path\to\dump.txt" label="catch" var="committing">
<cfdump output="e:\path\to\dump.txt" label="catch" var="#THIS#">
<cfset dickhead = THIS.Commit() >
<cfdump output="e:\path\to\dump.txt" label="catch" var="out">
我得到:
committing
****************************************************************
catch - component services.form_service_user
extends controllers.form_switch
Methods:
DEFAULTS
[function]
Arguments: none
ReturnType: struct
Roles:
Access: public
Output: false
DisplayName:
Description:
PROCESS
[function]
Arguments: none
ReturnType: struct
Roles:
Access: remote
Output: true
DisplayName:
Description:
COMMIT
[function]
Arguments: none
ReturnType: struct
Roles:
Access: public
Output: false
Description:
...
所以方法/函数就在那里。但我还没有退出。此外,我还清除了提交函数,除了单独的返回值和转储之外。我既没有得到转储也没有返回值。
问题:
如果我在 PROCESS 中,当它在生产中正常工作时,为什么我不能在实时服务器上调用 COMMIT?这是某种缓存还是其他设置?另外,我无权访问 CFadmin,所以我或多或少是盲目猜测?
感谢您提供任何信息!
编辑:
提交调用位于 try/catch 内:
<cftry>
<cfdump output="e:\dump.txt" label="catch" var="a">
<cfdump output="e:\dump.txt" label="catch" var="#THIS#">
<cfset LOCAL.Response = THIS.Commit() >
<cfdump output="e:\dump.txt" label="catch" var="b">
<!--- COMMIT ERRORS --->
<cfcatch>
<cfdump output="e:\dump.txt" label="catch" var="ERROR">
<cfset LOCAL.Response.Success = false />
<cfset LOCAL.Response.Errors = [["server_error","commit error"]] />
</cfcatch>
</cftry>
我收到 AJAX 返回的“提交错误”
最佳答案
检查方法的访问属性。
如果您从同一组件中的另一个方法调用组件中的方法(或从父组件继承的方法),则访问必须是私有(private)的、公共(public)的或包的。它不能是远程的。
确保您的 ColdFusion 映射对于实时服务器来说是正确的。
确保您已将所有应用程序文件部署到实时服务器的正确位置。
关于function - 为什么在生产环境下运行时,我无法在实时服务器上调用 Coldfusion CFC 中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11367653/