2009-05-19 51 views
26

爲了調試,我想將某些變量轉儲到我的網頁上。我怎麼能從一個cfscript標籤內做到這一點?如何在cfscript標籤內執行cfdump?

我嘗試以下,但它不工作:

<cfscript> 
    ... 
    <cfif cgi.REMOTE_ADDR eq "IP"> 
    <cfdump var="#var1#"><br/> 
    </cfif> 
    ... 
</cfscript> 

什麼可以做任何線索?

+0

密切相關:http://stackoverflow.com/questions/1917706/cfdump-cfcomponent-cfscript/1917756 – ale 2012-06-21 14:54:41

回答

39

在CF 9之前的版本中,您不能直接使用它。但是,您可以使用在CFLib中找到的dump() UDF。這裏有一個UDF的整個庫,它們模仿CF標籤,它們沒有直接的CFSCRIPT等價物。

ColdFusion 9(及更高版本)提供writeDump()函數。

3

編寫自己的代碼也相當容易。你只需在cfml中定義一個函數而不是cfscript。您也可以使用它來執行cfabort和cfloops。

這樣的事情(關閉我的頭頂......未執行)。

<CFFUNCTION NAME="MyDump"> 
    <CFARGUMENT NAME="OBJ" Required="TRUE"> 
    <CFDUMP VAR="#Obj#"> 
</CFFUNCTION> 
<CFSCRIPT> 
    if(cgi.REMOTE_ADDR eq "IP"){ 
    MyDump(Var1); 
    } 
</CFSCRIPT> 
2
<cffunction name="setAbort" access="private" returntype="void" output="false"> 
<cfdump var="#arguments#"/><cfabort> 
</cffunction> 
29

使用writeDump()怎麼樣,你使用writeOutput()

看到writeDump在CF 9參考

+0

這完全適用我到目前爲止在所有情況下。 – JimP 2011-06-15 17:36:58

5

是不是下面更加容易和簡單?

oAdmin = createObject("component", "cfide.adminapi.base"); 
oAdmin.dump(myVar); 

它適用於CF7和轉發,也許甚至更早。

-2

對於轉儲我們使用Writedump(myvar);而不是在cfscript中,我們使用abort;我們使用writeoutput();而不是在任何情況下退出執行程序。而不是

<cfoutput>#myvar#</cfoutput> 

以下是cfscript中dump和abort的代碼。

writedump(myvar); for dump 

abort; for stop execution of programm 

writeoutput(myvar); for output within cfscript 
2

現在普通的標籤名稱中不允許CFSCRIPT內開始的ColdFusion 11

<cfscript> 
    cfdump (var=#myVar#); 
</cfscript>