2008-11-05 36 views
2

我正在使用jQuery來處理VB編碼的ASP.NET網站的所有ajax需求。當我使用內置的$ .ajax函數來POST代碼隱藏功能並且存在異常時,它只是退出該函數,並在客戶端顯示錯誤。如何在使用jQuery時捕獲VB.NET中的異常ajax

除了在編碼時調試困難之外,更大的問題是Global.asax中的Application_Error函數在發生這些異常時不會觸發。這使得跟蹤生產錯誤幾乎不可能。

爲什麼它不會冒泡到Application_Error?是否將Catch語句中的代碼隱藏功能封裝起來?

jQuery的AJAX功能:

$.ajax({ 
    type: "POST", 
    url: "page.aspx/GetData", 
    data: "{'param':'" + param_value + "'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 

    success: function(msg) { 
     processData(msg); 
    }, 

    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("Error: " + textStatus + " - " + errorThrown); 
    } 
}); 

VB.NET功能:

<Script.Services.ScriptMethod()> _ 
<WebMethod()> _ 
Public Shared Function GetData(ByVal param As Integer) As String 
    'Parse some data 
    Return data 
End Function 
+0

是否有一個很好的理由,你想要處理全部的Application_Error中的錯誤,而不是GetData方法本身? – 2008-11-05 15:08:52

回答

0

使用.NET 3.5,你可以在ScriptManager object拉,並用它註冊你的JavaScript,這允許.NET管理腳本(它不適用於MS Ajax,它適用於第三方庫),這可能是一個解決方案。

1

我想出了一個解決方法。儘管我沒有找到直接獲取錯誤來引發Application_Error事件的方法,但是我發現了包含實際異常文本的jQuery XMLHttpRequest對象的一個​​屬性。

下面是一個例子,其中將顯示錯誤警報:

error: function(XMLHttpRequest, textStatus, errorThrown) { 
    alert("Error: " + XMLHttpRequest.responseText); 
} 

另一個想法是通過AJAX提交錯誤的Web方法將處理所有的錯誤事件的邏輯。