除了合理的后端错误处理外,还管理用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调用的错误处理程序 - 再次导致代码重复。
目前我卡住了。 我需要指导如何继续?
编辑
我讨厌回答我自己的问题。
我现在有一个丑陋但合理的解决方案。希望能有更多关于这个话题的答案。