2

我在使用 XHR 请求的后端使用 JavaScript 框架(wakanda),在前端使用 AngularJS。

我使用了 angular-loading-bar,它可以完美地自动处理 HTTP 请求,但它不能自动处理 XHR 请求。

有什么方法可以让它自动工作 XHR?

4

1 回答 1

0

XHR 与 HTTP

第一个 XHR 代表“ XmlHTTPRequest API ”()。(另请参阅W3C 规范版本Mozilla 文档)此 API 由 Microsoft 引入,然后由 WHATWG 和 W3C 标准化,促进了基于 Ajax 的网站和 Web 应用程序的创建。当您发出 XHR 请求时,它会发送一个 HTTP 请求

$http 与 HTTP

angular-loading-bar使用 angularJS $http拦截器来监听所有使用 angular $http API完成的 HTTP 请求。有角度的$http API 使用 XHR 来发出它的 HTTP 请求,但它不会覆盖 XMLHttpRequest 也不会覆盖它的原型。所以它不能拦截直接使用 XHR 的代码发出的 HTTP 请求。

角瓦坎达 HTTP 请求

angula-wakanda是在Wakanda 框架数据提供者之上编写的 Angular 服务。然后,它可以更轻松地使用偶尔添加到 Wakanda HTTP(RESTJSON-RPC)API 和/或 Wakanda 数据提供者之一的新功能进行自我更新。由于此数据提供程序与框架无关(可与 dojo、骨干网或其他任何东西一起使用),它不使用特定于角度的$http API,因此它的 HTTP 请求不会被angular-loading-bar拦截

如何解决?

Wakanda 团队已经讨论过为 Wakanda 数据提供者引入低级适配器层。然后它可能允许选择在某些专用上下文中使用哪个 HTTP API(如在 nodejs 中 XHR 不是本机 HTTP API)。将来应该有一个“数据提供者”专用的 github 存储库添加到Github Wakanda 团队帐户中。同时,您可以向Angular-Wakanda Github 存储库发送功能请求(不要犹豫提及这个 Stack Overflow 答案),为什么不呢,还可以尝试为提案做一个 fork ;-)

于 2015-05-22T10:27:04.990 回答