2017-03-02 72 views
4

我使用Laravel與阿賈克斯,並在我的控制器我有一個嘗試 - catch塊:Laravel AJAX抓500內部服務器錯誤

try { 
     something... 
    } catch (\Exception $e) { 
     return response()->json([ 
      'status' => 'error', 
      'message'=> 'error message' 
     ]); 
    } 

我使用這顯示在一個div錯誤消息頁。

這是工作,但不是如果錯誤是500內部服務器錯誤(例如:tokenmismatchexception)。

然後錯誤不會被catch-block捕獲,並且基本上用戶沒有被通知任何錯誤(除了在控制檯中)。

有沒有一種方法可以捕捉到這樣的錯誤,並在通常情況下在同一個div中顯示錯誤?

+1

你捕獲了你的AJAX的錯誤回調在您的JS – msonowal

+1

非常感謝,這是它實際上:) – Bergkamp10

+0

沒有足夠的數據來回答你的問題。如果您發現異常並返回一些內容,我敢打賭,laravell將返回200個HTTP狀態。如果錯誤沒有被捕獲(被拋出控制器之外),服務器應該發送500個狀態。所以,請檢查什麼是實際響應(標題和內容),然後編寫客戶端部分。 – degr

回答

3

這是因爲您可能沒有包含錯誤部分。 讓你的jQuery Ajax代碼,如:

$.ajax({ 
     url  : '/yoururl', 
     method : 'POST', 
     data : 
     { 
      name:"test" 
     }, 
     success : function(response) 
     { 
      //USE THIS SECTION WHEN ITS SUCCESS 
     }, 
     error : function(e) 
     { 
      //SHOW ERROR TO USER HERE THIS SECTION IS CALLED IN CASE OF ERRORS TO SEE THE OBJECT OF the error use console.log(e); 
     } 
    }); 
+1

這幾乎令人尷尬,但非常感謝:)我只用if(data.status ===「error」)和if(data.status ===「success」)成功 – Bergkamp10

+1

人們經常錯過或故意做不使用錯誤部分.. 這應該始終使用。 Upvote是因爲它的一個重要問題。 –

相關問題