如何在 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() 函数的 Adob​​e 文档链接

【讨论】:

【参考方案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内部输出到网页?

cfscript cfabort放弃

cfscript和queryExecute()使用like而不是equals

cfscript中IF块内的coldfusion continue关键字/奇怪的行为

如何在自定义 ColdFusion 日志文件中获得新行?

我们如何使放置在链接标签内的 div 不被导航