为了调试,我想将某些变量转储到我的网页上。我怎样才能从 cfscript 标签内做到这一点?
我尝试了以下方法,但它不起作用:
<cfscript>
...
<cfif cgi.REMOTE_ADDR eq "IP">
<cfdump var="#var1#"><br/>
</cfif>
...
</cfscript>
关于可以做什么的任何线索?
为了调试,我想将某些变量转储到我的网页上。我怎样才能从 cfscript 标签内做到这一点?
我尝试了以下方法,但它不起作用:
<cfscript>
...
<cfif cgi.REMOTE_ADDR eq "IP">
<cfdump var="#var1#"><br/>
</cfif>
...
</cfscript>
关于可以做什么的任何线索?
在 CF 9 之前的版本中,您不能直接这样做。但是,您可以使用CFLib 中的dump() UDF。那里有一整个 UDF 库,它们模仿没有直接 CFSCRIPT 等效项的 CF 标记。
ColdFusion 9(及更高版本)提供了该writeDump()
功能。
用于WriteDump()函数的 Adobe文档链接
像使用 writeOutput() 一样使用 writeDump()
请参阅CF 9 参考上的writeDump
以下是不是更容易和直接?
oAdmin = createObject("component", "cfide.adminapi.base");
oAdmin.dump(myVar);
它适用于 CF7 及更高版本,甚至可能更早。
自己编写也相当容易。您只需在 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>
现在在开始 ColdFusion 11 的 cfscript 中允许使用普通标签名称
<cfscript>
cfdump (var=#myVar#);
</cfscript>
<cffunction name="setAbort" access="private" returntype="void" output="false">
<cfdump var="#arguments#"/><cfabort>
</cffunction>
对于转储,我们使用 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