2017-02-24 45 views
1

在開發我平時做這樣的事情:如何處理生產中的ajax錯誤?

fetchFaqData() { 
    this.$http.get('/services/getfaq').then((response) => { 
    this.faqs = response.data; 
}, (response) => { 
    console.log(response); 
    }); 
} 

這是好的,當你從事開發工作,查看是否出現問題與您的Ajax請求。你在生產中如何處理這些代碼?

我認爲這可能不是明智的或更好的通過console.log顯示在生產中。人們在這種情況下做什麼?

把它寫到日誌文件什麼的?我通常在我的代碼中使用相當多的這些ajax塊,在console.log中輸出錯誤響應。我也看到很多這樣的例子。人們是否會在完成這些代碼後檢查它們的代碼並將其記錄到日誌或其他內容中?或者最好從一開始就這樣做?

感謝。

+0

您是否嘗試過像哨兵這樣的錯誤報告服務? –

+0

如果您使用的是jQuery,那麼您可以使用'.ajaxSetup()'定義一個適用於所有AJAX請求的通用錯誤處理程序 –

+1

首先 - 用Axios替換Vue資源,因爲不再支持VueResource。 –

回答

1

,我發現自己在同樣的情況,幸運的是我獲取一個JSON的內容,所以我不得不攔截和驗證效應初探爲:

this.$http.get('/api/json').then((response) => { 
    var json = JSON.parse(response.body); 

    if(!json){ 
     // alert error or do something 
    } 

    }, (response) => { 
    // console.log(response); 
    }); 

希望,就會有人對我們都提供了一個更好的答案

+1

我發現像sentry.io這樣的東西會在您安裝它時爲您提供諸如console.log消息之類的東西。我不確定將這些錯誤消息發送給第三方。除此之外,你必須支付超過10K的事件。即使這可能不會很快發生,我想我寧願有一個本地解決方案。我會研究更多,而人們希望提供更多的答案。 –

1

這取決於,你通常會處理在兩個方面你的錯誤:

  1. 如果錯誤不影響您的系統和用戶體驗的工作流程,你CA ñ可能會忽略它。如果它是重要的,你將能夠分析來自服務器的日誌,看看它爲什麼會響應一個錯誤。否則,如果它是客戶端問題 - 那麼,編寫測試交配或要求您的用戶報告錯誤:)

  2. 如果錯誤確實影響系統工作流程或用戶體驗,您可能需要處理錯誤並儘量確保您的用戶體驗不受影響。

例子:

如果您請求從一個不存在,嘗試使用一些備用用戶圖標服務器中的資料照片。

如果您的服務器崩潰並且響應超時,您可以顯示一些通知/對話框/消息,指出「Ooups,出錯了」。

總結:

顯示用戶可讀的錯誤,如果它是他們的經驗很重要。

客戶端ajax-錯誤不是很重要,直到他們與某些服務器配對失敗,因爲,例如,可以有不良連接,他的電話可能會失敗。

希望你會發現它很有用。

+0

是的,這也是有用的。 – samayo

+0

即使用戶工作流程沒有受到影響,因爲我正確處理了錯誤並顯示了一個可選的友好錯誤消息,或者防止出現某些令人討厭的問題,但我仍然無法看到個人是否出現了問題。從javascript中出錯的東西來分析日誌(就像一個糟糕的Ajax請求)。我首先需要一個系統登錄,這是整個問題的關鍵。所以我明白你的意思,這一直是我們關心的問題,但我需要一種解決方案,即使用戶沒有看到它,但實際上出現了問題。 –

+0

@ Stephan-v你不需要分析來自ajax的日誌,因爲即使沒有錯誤,例如因爲互聯網連接不好,Ajax調用也會失敗。我試圖說的是,你需要從後端分析日誌,而不是前端。 – euvl