2012-11-20 46 views
4

我正在使用JavaScript插件將文件上傳到ColdFusion應用程序。 它使用AJAX與服務器進行通信,並期望返回JSON。 (非常標準) 我有兩個cfm腳本。如何調試一個不會呈現HTML或運行javascript的coldfusion腳本?

第一個包含插件的表單。

第二處理實際的上傳,刪除,返回文件列表等

第二腳本返回JSON作爲純文本的插件來處理。

第二個腳本不呈現HTML,並且發送回第一個腳本的JSON直接送入js插件。

實際上一切正常。 我已經得到它來上傳文件並返回文件列表。

我的問題: 隨着第二個腳本的代碼變得越來越複雜,它越來越難以調試。

它不呈現任何代碼,所以cfdump沒用。

我在黑暗中徘徊,沒有錯誤信息或其他信息讓我知道爲什麼有些東西不工作。

我的侷限性: 該插件很大且很複雜,如果我不需要,我不想惹它。 我不應該惹它,因爲它完美的工作,這是我的cf代碼,這是問題。

我也無權訪問此項目的管理區域。

但我需要一些方法來記錄或調試此代碼。

我的解決方案: 我一直在做cfdump到第三個文件,但是這是一個不太理想的解決方案,我花一半的時間編碼和一半的時間改變cfdump解決方案,以滿足新的需求。同時也在發展我的cfdump記錄器來處理不同的情況。我不想通過編寫我自己的記錄器重新發明輪子,我只是想編碼。 我得到我的管理員安裝AJAX記錄器沒有意識到它的意思是記錄JavaScript,而不是ColdFusion。所以這也不起作用。

我知道人們已經使用ColdFusion進行AJAX。我不能是唯一有這個問題的人。任何幫助表示讚賞。

+0

你使用什麼瀏覽器?您是否能夠轉儲到Ajax響應以用於調試和使用瀏覽器控制檯進行查看? – Jason

+0

您是否可以將任何需要查看的值或錯誤轉儲到ajax響應中並通過Chromes「Developer Tools」>「Network」查看響應主體?我不確定我是否完全理解您的問題,但這是否能解決您的問題? – Jason

+0

我使用的是Chrome和Firefox。這可能是一個解決方案。但即使我知道我回來的東西,如果我沒有收回任何東西,它仍然不會告訴我什麼事情會崩潰。 Ajax的部分很簡單,它是基本的流程控制問題和第二個腳本中的愚蠢錯誤,這些錯誤對我來說是不可見的,導致真正的問題。 – leetheguy

回答

3

不要忘了簡單而強大的<cflog>標籤。您可以在代碼中的任意位置轉儲變量,並且如果要轉儲結構,則可以使用serializeJSON(someStruct)來查看日誌中的整個結構(或轉換爲結構的對象)。將它與Eclipse/CFBuilder中的尾部視圖相結合,您可以實時瞭解非HTML生成代碼的內部工作流。

+0

謝謝。我的一個限制是無法訪問管理面板中的日誌,因爲我在非常安全的系統上遠程執行此操作。但你的建議聽起來最好,所以我看起來更深入,它與本教程相結合:http://colorblindprogramming.com/how-to-read-coldfusion-log-files-directly-from-your-app – leetheguy

+0

感謝您的鏈接到那個提示。在沒有直接訪問日誌的服務器上閱讀日誌非常方便! – Brian

2

如果您使用Firefox,請安裝Firebug。在控制檯選項卡中,您可以看到所有的Ajax請求,將請求擴展到「HTML」選項卡。在'HTML'選項卡中,您將能夠看到由服務器頁面(您的第二個腳本)創建的Html模板,並且您還可以找到coldfusion錯誤。 Firebug是與Ajax協同工作的好工具,希望這對你也有幫助。

1

我會建議使用<cftry>並將錯誤郵寄給<cfmail type="html" ...><cfdump ...以深入瞭解您的腳本。

例子:

<CFTRY> 
    <CFSET thingsmightgowronghere &= "foo" /> 
    <CFCATCH type="any"> 
     <CFMAIL from="debug[email protected]" to="[email protected]" subject="#cfcatch.Message#" type="html"><CFDUMP var="#cfcatch#" /></CFMAIL> 
    </CFCATCH> 
</CFTRY>  

調試與螢火蟲也將是可能的,但如果你cfdump的東西,看看它在螢火它不是那麼舒服通過cfdump創建CSS/JS抓取。

1

我很好奇的是cfdump是不可用的,由於缺乏html標籤的信念。我創建了一個頁面,只有這樣的代碼:

<cfsetting showdebugoutput="no"> 
<cfset foo = "bar"> 
<cfdump var="#foo#"> 

當我瀏覽它,這個詞「吧」出現在瀏覽器中。

相關問題