2015-09-28 121 views
0

你好我如何處理服務器的異常 - 使用jquery - jquery?使用ajax管理服務器異常

我正在用Java和struts框架開發一個Web應用程序。在項目中,我託管異常使用全局例外:

<Global-exceptions> 
    <Exception key = "label.exception" type = "java.lang.Exception" 
    handler = "exception.ExceptionHandler" 
    path = "pages/errore.jsp" /> 
    </ Global-exceptions> 

,我用的是在這樣的一個操作調用後一個AJAX功能:

function find (cer, descr, urlToOpen, windowName, idapp) { 
$ .ajax ({ 
type: "POST" 
url: "home.do?method=find" 
date: {calledfunction: windowName, idfind: find, description: descr, idapp: idapp, urlToOpen: urlToOpen} 
success: function (data) { 
var = newWindowName windowName.replace (/ [^ a-zA-Z0-9]/g, ''); 
window.open (urlToOpen, newWindowName); 
alert ("Next"); 
}, 
error: function (thrownError) { 
alert ("ERROR"); 
} 
}); 
} 

的問題是,我的動作拋出一個異常(我強迫自己),但從不打開錯誤頁面。相反,它運行的任何內部 成功。

+0

這是您的實際JavaScript嗎?如果是這樣,有一些錯誤可能會導致一個異常 - 第一個'$'之後的空間;幾個屬性後遺漏的逗號; 'date'應該是'data'。 –

+0

複製和粘貼中會出現一些問題。在Eclipse中我正確地寫了它。無論如何感謝您的警告 – giuls26

回答

0

您應該在pages/errore.jsp中有<% response.setStatus(500); %>,以便相同的錯誤狀態代碼將返回到調用Ajax函數。這裏$.ajax的底層代碼將檢查狀態碼。由於狀態碼是500,與200 OK不同, error:處理程序將被調用,而不是success:

+0

好的,謝謝。通過這種方式,我有一個錯誤,並顯示警報,但..爲什麼我的網頁error.jsp未打開? – giuls26

+0

在Ajax的情況下,您實際上在處理程序中獲得響應;成功或錯誤。通過觀察響應,您必須手動將用戶帶到所需的頁面。 – vijayP

+0

因此,我以這種方式管理異常( ........)對事件沒有影響? – giuls26