除了合理的後端錯誤處理外,還管理用AngularJS重寫我的項目。AngularJS報告後端錯誤
我只希望有一種通用的方法來捕獲Ajax錯誤響應並相應地修改範圍。
jQuery中,我將做到以下幾點:
- 設置一個元素(可以稱之爲ajaxRoot)關於Ajax設置
我會確保在後臺發送的報頭「顯示錯誤消息「每個鍵與ajaxRoot下的元素名稱匹配。例如
<div id="myAjaxSection"> <span class="view-port"> <input name="username"/> </span> </div> $.ajax({ ajaxRoot : $("#myAjaxSection"), ... });
使用
ajaxError
捕捉所有的Ajax錯誤,看起來像if (ajaxSettings.ajaxRoot && jqXHR.getResponseHeader("display-messages")){ var msgs = JSON.parse(jqXHR.getResponseHeader("display-message")); var $ajaxRoot = ajaxSettings.ajaxRoot; var k; for (k in msgs){ $ajaxRoot.find("[name=" + k + "]").closest(".view-port").addClass("error").popover({content: msgs[k]}); } }
這將輕鬆打理所有錯誤的假設,我決定在約定的任何頁面上。
現在我試圖達到與AngularJS類似的東西。這是我迄今爲止所嘗試的
- http攔截器 - 但我無法訪問範圍。
- http攔截器+發佈/訂閱事件 - 需要在每個控制器中重複代碼。
- $ http調用的錯誤處理程序 - 再次導致代碼重複。
目前我卡住了。 我需要指導如何繼續?
編輯
我討厭回答我自己的問題。
我現在有一個醜陋但合理的解決方案。希望能有更多關於這個話題的答案。