【问题标题】:Angular $http request works strangeAngular $http 请求很奇怪
【发布时间】:2017-09-01 03:36:15
【问题描述】:

为什么 $http 服务完成请求然后加载 JSON 数据?

Minimal code example

var vm = this;
$http
  .get("/getData")
  .then(function (data) {
    // promise is resolved but I still don't have access to the data
    vm.data = data;
  });

当我在 chrome 浏览器中测试时,我看到以下内容:

  • 待处理的请求(“/getData”)
  • 状态码:200(请求完成)
  • previewresponse 选项卡中没有可用的响应数据
  • google 检查器 底部:已传输 1.5 MB(响应数据)
  • json 响应数据在 5 秒后可用

当请求完成(并显示 Status 200 OK)时,我希望能够访问响应数据(尚未下载)。


结论

即使请求以 code status 200 OK 结束并且我的 promise 已准备就绪,我仍然需要等待 5 秒才能传输数据。

【问题讨论】:

  • 你能提供一个可测试的例子吗?从来没有遇到过这个问题,所以可能是您的实现导致了它。
  • 从 5 秒的响应中我猜是后端的问题,但我想知道你怎么知道它需要 5 秒?请提供一个plunker
  • 你在做什么?从后端下载?顺便说一句,这里的this 是什么?你可以试试$scope.postData = data.data
  • this.data = data 可能是错误的,因为它指的是function 范围,我认为这不是您想要的。
  • @Hinrich 是的,反正没关系

标签: javascript angularjs http xmlhttprequest


【解决方案1】:

对于 Angular $http 服务,网络选项卡显示两种对单个 API 调用的请求,其中一种是带有 OPTION 方法调用的 API。 OPTION 方法允许客户端确定与资源相关联的选项和/或要求,或服务器的功能,而无需暗示资源操作或启动资源检索。第二个可能是您的实际 API 调用。您可以检查网络选项卡。这是$http 服务默认行为。

【讨论】:

  • @que1326 : 请检查网络选项卡是否显示两个调用单个 API 调用,其中一个是 OPTION 方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 2018-05-16
相关资源
最近更新 更多