如何在 cfscript 标签内执行 cfdump?
Posted
技术标签:
【中文标题】如何在 cfscript 标签内执行 cfdump?【英文标题】:How to do a cfdump inside a cfscript tag? 【发布时间】:2010-10-27 09:11:31 【问题描述】:为了调试,我想将某些变量转储到我的网页上。我怎样才能从 cfscript 标记中做到这一点?
我尝试了以下方法,但它不起作用:
<cfscript>
...
<cfif cgi.REMOTE_ADDR eq "IP">
<cfdump var="#var1#"><br/>
</cfif>
...
</cfscript>
关于可以做什么的任何线索?
【问题讨论】:
强相关:***.com/questions/1917706/cfdump-cfcomponent-cfscript/… 【参考方案1】:在 CF 9 之前的版本中,您不能直接这样做。但是,您可以使用 CFLib 中的 dump() UDF。那里有一整个 UDF 库,它们模仿没有直接 CFSCRIPT 等效项的 CF 标记。
ColdFusion 9(及更高版本)提供writeDump()
功能。
WriteDump() 函数的 Adobe 文档链接
【讨论】:
【参考方案2】:像使用 writeOutput() 一样使用 writeDump()
参见 CF 9 参考中的 writeDump
【讨论】:
【参考方案3】:以下是不是更简单直接?
oAdmin = createObject("component", "cfide.adminapi.base");
oAdmin.dump(myVar);
它适用于 CF7 及更高版本,甚至可能更早。
【讨论】:
【参考方案4】:编写自己的也相当容易。您只需在 cfml 而不是 cfscript 中定义一个函数。您也可以使用它来执行 cfaborts 和 cfloops。
类似这样的事情(在我的脑海中......没有被执行)。
<CFFUNCTION NAME="MyDump">
<CFARGUMENT NAME="OBJ" Required="TRUE">
<CFDUMP VAR="#Obj#">
</CFFUNCTION>
<CFSCRIPT>
if(cgi.REMOTE_ADDR eq "IP")
MyDump(Var1);
</CFSCRIPT>
【讨论】:
【参考方案5】:现在在从 ColdFusion 11 开始的 cfscript 中允许使用普通标签名称
<cfscript>
cfdump (var=#myVar#);
</cfscript>
【讨论】:
【参考方案6】:<cffunction name="setAbort" access="private" returntype="void" output="false">
<cfdump var="#arguments#"/><cfabort>
</cffunction>
【讨论】:
【参考方案7】:对于转储,我们使用 Writedump(myvar);我们使用 abort 而不是 cfscript 和相同的;而不是在任何实例中退出程序的执行。我们使用 writeoutput();而不是
<cfoutput>#myvar#</cfoutput>
下面是cfscript中转储和中止的代码。
writedump(myvar); for dump
abort; for stop execution of programm
writeoutput(myvar); for output within cfscript
【讨论】:
以上是关于如何在 cfscript 标签内执行 cfdump?的主要内容,如果未能解决你的问题,请参考以下文章
cfscript和queryExecute()使用like而不是equals