2012-06-28 48 views
3

Backbone.js有一個整潔的功能,您可以使用標準HTTP動詞將更改同步到服務器。HTTP狀態代碼 - Backbone.js和Jquery

例如,你可能有一個模型對象和一些代碼,執行一個GET:

var coolModel = Backbone.Model.extend({url:'mysite/mymodel'}); 
var myCoolModel = new coolModel(); 
myCoolModel.fetch({error:processError}); 

在哪裏,服務器返回4XX或者5XX的情況下,誤差函數「的processError」運行,這是偉大的,您可以處理適合的錯誤。

由於backbone.js使用jQuery來執行GET,Jquery報告錯誤,它是。 4XX是一個有效的錯誤,應該從中恢復,我的客戶端應用程序沒有被破壞,它只需要表現稍微不同。

我的問題是 - 從瀏覽器控制檯窗口或狀態欄中顯示jQuery引發此錯誤是否被認爲是不好的做法?我是否應該以某種方式抑制此錯誤,以便在錯誤可恢復時,生產中的用戶看不到瀏覽器報告的錯誤?或者,在HTTP的土地上保持原樣是否正確?

+0

如果您的模型驗證就緒並且您的服務器端腳本正常工作,則應該看不到這些錯誤。無論如何,如果用戶沒有通過錯誤的輸入等引起這些錯誤,請不要將它們顯示給用戶。 –

+0

jQuery是否真的向控制檯報告錯誤?或者您的意思是瀏覽器調試工具的網絡面板,可以看到狀態代碼? – Bergi

回答

2

Backbone中的處理錯誤是一個非常有趣的話題,我希望在某個時候寫出來。以非突兀的方式直觀地向用戶指出錯誤非常好。有些事情要考慮的是:

  • 您的用戶不看狀態欄或開發工具
  • 你的用戶是從您的應用程序期待特定行爲
  • 當你的應用程序的行爲不正確的視覺問題指標重要的

我建議考慮失敗如何影響用戶的意圖。例如,如果他們正在獲取第一頁的數據並且數據沒有被正確地返回,那麼您將需要通過顯示檢索到的數據的失敗來處理錯誤(或者甚至更好地回退緩存中以前加載的數據......它它存在)。如果意圖是保存一個項目,並且返回的錯誤代碼是400,那肯定不會成功,應該指出用戶應該再次嘗試保存(或者嘗試在間隔時間內重新保存)。

您可以靜靜地忽略錯誤並且不會指出它們,但是您的用戶會感到困惑並且會導致意想不到的問題。我不能鼓吹使用完美的錯誤處理,因爲我自己仍然在改進。

1

我會說HTTP狀態碼是有原因的,如果它們的原因是有效的,那麼完全有效,所以是的,只是使用它們。 但是400意味着Bad Request,這意味着輸入在語法上是錯誤。您應該發送更多appropriate header(如409衝突,428失敗的先決條件等)。我正努力想出一個有效使用418 I'm a teapot的項目,但我會在某一天取得成功。

任何對您的網站的內部工作感興趣的人都可以看看控制檯,但應該沒有問題有了這個,你也不應該過度幹練地看看那裏,只要確保你自己的流程是健全的。

+1

感謝您的支持。我可能不清楚。我會修改我的問題。我很自然地認爲使用狀態代碼是一種可行的方式,它並不是真正的使用哪種狀態代碼的問題。我的問題是抑制此錯誤是否合適,以便在錯誤可恢復時,生產中的用戶看不到瀏覽器報告的錯誤。 –

+1

'普通'用戶不會看到任何錯誤。控制檯'打開'的人不是普通用戶。這就像你是一個出租車司機,你的客戶打開你的汽車引擎蓋來評估你的引擎:這並不是真的。或者我仍然在某個地方錯過了這個觀點? – Wrikken