问题标签 [angularjs-http]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
12806 浏览

angularjs - 我们如何测试非范围角度控制器方法?

我们在 Angular 控制器中没有几个方法,它们不在范围变量上。

有谁知道,我们如何在 Jasmine 测试中执行或调用这些方法?

这是主要代码。

现在在我的 jasmine 测试中,我们正在传递“handleSuccessOfAPI”和“handleFailureOfAPI”方法,但这些都是未定义的。

这是茉莉花测试代码。

0 投票
1 回答
2744 浏览

angularjs - 将多个参数传递给 $http.post?

我正在尝试使用以下网址发出发布请求以将数据保存在服务器中:

我想传递projectId 和scenarioId。如何使用 $http.post 做到这一点?

0 投票
2 回答
27782 浏览

angularjs - Angular Js - 在标头默认设置令牌

我试图将带有访问令牌的标头添加到每个 API 调用。它适用于所有 GET 请求,但是一旦我尝试进行 POST,就不会添加标头。

这是我添加令牌的方法:

从这里调用:

我试过这样做:

但这也行不通。它仅在我更改标题键名称时有效,如下所示:

如何为帖子分配默认标头并在 AngularJs 中获取请求?

0 投票
1 回答
51 浏览

angularjs - AngularJS奇怪的CORS问题取决于调用POST的方法

很简单!为什么这不起作用:

然而这确实!

我在第一个例子中得到了 401 未授权!第二个作品就像一个魅力..

0 投票
0 回答
1894 浏览

javascript - AngularJS 1.2 $http 似乎在没有数据传递时缓存 POST 请求

我在使用$http服务的 AngularJS 1.2 POST 请求时遇到问题。

单击按钮时,我会触发一个 POST 请求,如下所示:

我的问题是,如果我在按钮上单击两次并且第一个回调尚未触发,则只会发出一个 HTTP 请求,但我的回调会被触发两次(使用相同的数据作为参数)。

如果我明确添加缓存:false:

然后按我的预期发出两个请求。

对我来说它看起来像一个错误。为什么有人要缓存 POST 请求?此外,AngularJS 文档指定我们必须传递 cache: true 如果我们想为 GET 请求激活缓存。听起来默认情况下它是不活动的,对于 POST 请求根本不活动(这对我来说很有意义)。

有没有办法在 1.2 分支上为每个请求一劳永逸地停用缓存?我没有找到。

编辑

我误用了$http.post。第二个参数不是选项映射,而是要发送到服务器的数据。根据文档,此参数是必需的。所以我可以执行这个:

它按预期工作。

所以真正的问题是:为什么调用正常工作的data参数是强制性的?$http.post我觉得我错过了一些关于 HTTP 的东西。我已经在 URL 中拥有了我需要的一切(类似于company/company_id/employee),我不需要任何额外的数据。

0 投票
2 回答
709 浏览

angularjs - Angularjs 存根开发 - $http 调用以及 $httpBackend

我正在使用 angularjs 进行存根开发。我的存根是服务器上的 JSON 文件。所以,我在“存根”函数中调用 $http 来获取存根。然而,由于 $http 是异步的,whenGET 总是返回空数据(它不等待 http 完成)。我调查了有关此主题的当前问题。它们提供了将 http 调用的返回值分配给范围数据模型的方法。我想在http请求完成后返回数据。下面是代码。

基本上,我希望行 whenGET 等到填充 tempData 。get 函数中的 tempData 在 whenGET 方法运行后记录在控制台中。

0 投票
3 回答
23389 浏览

ios - AngularJS 中的 $http 错误处理

我的 AngularJS 项目中的 $http 无法识别 iOS 上的 40X(401,403,405...) 错误。我正在使用 1.2.10 AngularJS 版本和 Cordova 3.4.0 版本。

下面是我正在使用的代码:

data.status正在返回 0 并且状态返回未定义。请帮我解决这个问题。

试图将域包含在 IOS 的白名单中。但没有解决方案 :( 它仍然给出相同的响应。

但是相同的代码在 Android 中运行得非常好。请帮我解决这个问题。

提前致谢 :)

0 投票
2 回答
8285 浏览

angularjs - AngularJS:控制器范围不会与承诺同步

我已经拿起了一个项目,我正在尝试将一些数据从服务返回到我的控制器。我已经在这里待了大约 12 个小时,并尝试了不同的方法。它们通常都会导致这种“缺失数据”。

我试过了

  • 使用 $resource 而不是 $http
  • $http.get在不使用承诺的情况下将权利放在控制器内
  • 服务作为实际服务(而不是工厂),没有回报
  • 建立工厂一堆不同的方式来返回各种格式的数据
  • 使用 setTimeout 和 $apply

我觉得我现在拥有的东西很简单,而且我读过的所有内容都说这应该可行

angularjs-load-data-from-service

角度控制器无法从服务中获取数据

angularjs-promises-not-firing-when-returned-from-a-service

angularjs-promise-not-resolving-properly

angularjs-promise

这些链接是从今天开始的。

我认为可能存在 $scope 问题,因为过去我看到 $scopes 在使用多个控制器时无法获取数据,但是该站点只是在index.html中声明了一个控制器作为<body ng-app="myApp" ng-controller="BodyCtrl">设置。主要的app.js使用状态(我相信来自 ui-router)......

将控制器附加到不同的页面。此外,该站点还有一些其他控制器从服务中获取数据,我首先将其作为模板查看,但是,那里的数据和返回比我想要得到的要复杂得多。不过,最重要的是,控制器正在访问服务提供的数据。他们都在使用 $resource,这就是我从这个问题开始的方式。我一直坚持使用 $http,因为它应该可以工作,而且我想在我进入“更高级别”之前让它与它一起工作。另外,我只需要从端点获取,所以觉得 $resource 有点矫枉过正。

服务

控制器

控制台日志

所以这是我的控制台日志,我可以得到这么多,只是不是实际数据!这就是我需要的。我什至发疯了,并扩展了我.then(function (data) {的功能以捕获控制器中需要的所有功能$scope.data。那是火车残骸。

据我所知,这应该可行,但我不确定问题可能出在哪里!也许我不明白 Promise 是如何工作或解决的。我之前在另一个项目中使用过 Angular,但我一开始就在那里,并且了解它是如何组合在一起的。这个项目的结构不同,感觉更加混乱。我想简化它,但我什至似乎无法获得一些简单的数据来返回!

感谢您在确定为什么这不起作用时提供的任何帮助/反馈,谢谢!

编辑:所以问题是,为什么会console.log("data", $scope.data)在承诺之前返回 null/?

在控制器再往下一点我有这个

它似乎无权访问数据。

EDIT2:我添加了$http.get我在控制器内部使用的,以及它的控制台日志和我需要的实际$scope.dataforEach

编辑3:

更新服务

更新的控制器

所以$scope.testData需要在视图中使用(nvd3图表),它没有获取数据。

解决方案

0 投票
6 回答
210484 浏览

angularjs - 在 AngularJS 中使用带有 Promises 的 success/error/finally/catch

$http在 AngularJs 中使用,我不确定如何使用返回的承诺和处理错误。

我有这个代码:

这是一个好方法,还是有更简单的方法?

0 投票
1 回答
1884 浏览

angularjs - AngularJS $http 成功但不工作

我正在使用 angularJS 和 SLIM PHP restful 服务器,PHP 服务正在运行,实际上我已经使用 $http.get() 在这个应用程序中没有任何问题......但是现在发生了一件奇怪的事情,我创建了一个新函数与其他人一样,它得到 .success(function(data)) 没有问题,我实际上可以 console.log(data) 并显示正确的结果,但是当 .success() 完成并返回时,我收到未定义的结果。ps:浏览器控制台没有错误。

  • success() 中的 Console.log() 返回正确的数据
  • loadMarkers() 后的 Console.log() 返回 undefined