2013-09-30 37 views
2

我有一個使用jQuery通過$.post調用cfc的CF應用程序。我已經在CFC處理錯誤,但如何抓住這個例子:通過Ajax調用CFC時發生CF錯誤

CFC:

<cfcomponent> 
    <cffunction name="function_1" access="remote" returnformat="json"> 
     ... 
    </cffunction> 
    .... 
</cfcomponent> 

調用頁面:

<html> 
    <head>...</head> 
    <body>... 
     <script> 
      $.post("mycfc.cfc",{ 
       method: "functio_1", //notice the misspelling 
       .... 
     </script> 
    </body> 
</html> 

這不會引起JavaScript錯誤,並返回一個200響應。

的錯誤將是:

The method functio_1 was not found in component E:\inetpub\wwwroot\mycfc.cfc. Ensure that the method is defined, and that it is spelled correctly. <br>The error occurred on line -1. 

我明白,這是基本的例子,並且容易固定,但我敢肯定有很多其他的例子,其中類似的事情可能發生。

有什麼想法?

+0

修復拼寫錯誤。你的代碼正在做它應該做的事,你只是沒有正確處理錯誤。 – Blazemonger

+3

拼寫錯誤旨在幫助描述問題。 –

回答

6

處理缺失的功能,你可以看看onMissingMethod的本·納德爾的解釋()函數http://www.bennadel.com/blog/868-Learning-ColdFusion-8-OnMissingMethod-Event-Handler.htm

你總是可以把這個功能可以由你的所有的子類,即CFC擴展父類。

因此,例如,您可以通過此onMissingMethod()實現來獲得object.cfc,然後您的所有cfc都可以擴展它。同時,如果您希望處理ajax調用中的任何其他錯誤,那麼您可以從cfc爲任何ajax調用創建標準返回類型結構,併爲其添加狀態字段。所以,當你在cfc中出現任何錯誤時,你可以設置狀態爲失敗,當事情正在工作時,你可以設置狀態爲通過,這可以在以後由你在ajax返回函數中處理。

+0

我會看看'onMissingMethod()'函數,並且我將不得不稍微調整我的ajax返回處理函數。我正在返回一個標準結構,但並沒有真正處理JS方面的錯誤。 –

+1

@RobM我通常有一個看起來像'{success:false,result:{data:},errors:{}}'的AJAX數據包,如果'success = false',我會處理'errors'的值 –

+0

@ RobM你也可以使用jquery錯誤句柄在javascript中捕獲這個錯誤(.error(function(e){alert(e.status);});) –

相關問題