2010-05-26 307 views

回答

2

這取決於AJAX方法返回的內容。如果它是純HTML,則可以輸出一條錯誤消息,並將其呈現給用戶。 如果它是JSON,那麼將一些字段添加到結構中,該結構可以包含錯誤消息或錯誤代碼,以便在檢索響應客戶端時處理它。

+0

基本上它返回一個JSON對象 - 但是當拋出一個異常時,代碼將會停止,然後我會限制在catch塊中的任何東西 - 在這裏處理這個最好的方法是什麼? – Ali 2010-05-26 12:15:28

+0

處理這個問題的最好方法是......捕捉異常:)圍繞可以用try-catch塊拋出的代碼並填充catch中的JSON錯誤。這是例外的美妙之處:你可以抓住它們並對它們採取行動。 – Palantir 2010-05-26 12:41:59

0

您的ajax請求可以響應500的服務器代碼,提醒AJAX調用者發生了可怕的錯誤。大多數庫實現onFailure回調,將在此事件中觸發。

0

我不知道你是否使用jQuery。我的答案是假設你使用jQuery,但是你可以將相同的概念應用到另一個JavaScript框架(或沒有)。通過這種方式,用戶實際上將在堆棧跟蹤,而不是一個一般錯誤消息(這是uselss反正)尋找:

$.ajax({ 
      url: '/some_url', 
      type: 'post', //or get 
      data: ..., 
      success: function() { /* handle success */ }, 
      error: function(XMLHttpRequest, textStatus, errorThrown) {      
       $('#error_dlg').dialog('open').trigger('initDlg', [XMLHttpRequest]);      
      } 
     }); 


$('#error_dlg').dialog({ 
    autoOpen: false, 
    width: 550, 
    height: 400, 
    modal: true, 
    buttons: { 
     'Close': function() { 
      $(this).dialog('close'); 
     } 
    }, 
    open: function(event, ui) {    
    }   
}).bind('initDlg', function(e, XMLHttpRequest) {  
    $('#error_stack_trace').append($('<div>').html(XMLHttpRequest.responseText)); 
}); 
0

東西我最近碰到一個可能會有所幫助的是:

http://php.net/manual/en/function.set-error-handler.php

基本上,如果PHP遇到錯誤,它將使用您的處理程序,您可以使用您的處理程序來處理異步請求或同步請求。

但是,你似乎也在你的代碼中拋出異常。粗略瀏覽一下,你也可以創建一個自定義的異常處理類。

http://www.w3schools.com/php/php_exception.asp

再次,你可以把它設計與異步或同步請求工作。在你的Javascript中,如果你使用JSON作爲響應,你可以簡單地設置一個錯誤標誌來提醒你的代碼有異常/錯誤,並且它會作出適當的響應。如果您使用直接的HTML作爲響應,則可能必須發送500錯誤(或其他變體之一,我對500代碼不熟悉),以便您可以使用onFailurefailure函數處理程序作爲其他人提到。

相關問題