我需要使用该$http服务发送GET请求.其中一个参数是一组id.网址看起来像这个mysite.com/items?id[]=1&id[]=2&id[]=3&id[]=4
我试过这种方法
$http(
method: 'GET',
url: '/items',
params: {
id: ids // ids is [1, 2, 3, 4]
}
)
Run Code Online (Sandbox Code Playgroud)
但我记下的网址是mysite.com/items?id=%5B%221%22%2C%222%22%2C%223%22%2C%224%22%5D
那是因为Angular在JSON字符串中转换我的值.有没有办法得到我想要的行为?
[更新]
由于Jonathan建议使用jQuery,我解决了这个问题$.param().
$http(
method: 'GET'
url: '/items?' + $.param({id: ids})
)
Run Code Online (Sandbox Code Playgroud) 我刚开始学习Angular 2我正在尝试使用get调用来访问URL,但是即使在浏览器的网络中,get似乎也没有通过我无法找到获取URL的URL.
该程序将进入上面和下面的方法控制台记录,但是get调用没有任何内容
我的服务方式
import { Headers, Http, Response } from '@angular/http';
import { Injectable } from '@angular/core';
import { Persons } from './mock-people';
import { Person } from './person';
import {Observable} from 'rxjs/Rx';
getAllPersons(): void {
console.log("Here");
this.http.get(`http://swapi.co/api/people/1`)
.map((response: Response) => {
console.log(response.json());
response.json();
});
console.log("Comes here 2");
}
Run Code Online (Sandbox Code Playgroud)
进口HttpModule在app.module.ts
我的控制台屏幕截图
![安慰]](https://i.stack.imgur.com/w9AeE.png)
我使用加载一些二进制数据
$http.post(url, data, { responseType: "arraybuffer" }).success(
function (data) { /* */ });
Run Code Online (Sandbox Code Playgroud)
如果出现错误,服务器会响应错误的JSON对象
{ "message" : "something went wrong!" }
Run Code Online (Sandbox Code Playgroud)
有没有办法以不同于成功响应的类型获取错误响应?
$http.post(url, data, { responseType: "arraybuffer" })
.success(function (data) { /* */ })
.error(function (data) { /* how to access data.message ??? */ })
Run Code Online (Sandbox Code Playgroud) 我的服务器返回这种标题Content-Range:0-10/0::

我试着用角度读这个标题而没有运气:
var promise = $http.get(url, {
params: query
}).then(function(response) {
console.log(response.headers());
return response.data;
});
Run Code Online (Sandbox Code Playgroud)
只打印
Object {content-type: "application/json; charset=utf-8"}
Run Code Online (Sandbox Code Playgroud)
任何想法如何访问内容范围标题?
得到这个"ConnectionBackend没有提供者!" 尝试使用httppromise 时出错.
// ... tl;dr import a bunch of stuff
platformBrowserDynamic().bootstrapModule(MyModule);
Run Code Online (Sandbox Code Playgroud)
// ... tl;dr import a bunch of stuff
@NgModule({
declarations: [
PostComponent
],
providers: [
Actions,
MyService,
Http
],
imports: [
...
],
bootstrap: [MyComponent]
})
Run Code Online (Sandbox Code Playgroud)
import { Component, OnInit } from '@angular/core';
import {ActivatedRoute, Router} from '@angular/router';
import {Observable} from 'rxjs/Observable';
import {MyService} from './../services/myService'
import {Post} from './post';
@Component({
templateUrl: 'post.component.html',
styleUrls: ['post.component.css']
})
export class MyComponent implements OnInit {
post: …Run Code Online (Sandbox Code Playgroud) 我看到很多教程做了这样的事情:
http.get("...").subscribe(
success => console.log('hello success'),
error => console.log('bye error')
);
Run Code Online (Sandbox Code Playgroud)
我不知道它是如何工作的,因为没有任何类型或任何东西,但是我试图自己这样做,我最终得到请求总是成功,即使我有一个错误.问题是什么?
麻烦制造者:
this.memberService.create(this.currentMember)
.subscribe(
success => {
let mem: Member = success.json() as Member;
if (this.selectedOrganization) {
this.addMemberToOrganization(mem);
} else if (this.selectedServiceProvider) {
this.addMemberToServiceProvider(mem);
} else {
this.toastsService.error("lbl_users_service_provider_and_organization_undefined");
}
},
error => console.log(error)
);
Run Code Online (Sandbox Code Playgroud)
memberService中的Create-Method:
create(member: Member): Observable<any> {
return this.http
.post(this.RESOURCE_BASE_URL, member)
.map(response => {
if (response.status === 200) this.toastsSerivce.success(this.translateService.instant('lbl_users_member_created'));
return response;
})
.catch(error => this.toastsSerivce.error(this.translateService.instant('lbl_users_member_create_failed')));
}
Run Code Online (Sandbox Code Playgroud)
我甚至发现错误,但这subscribe部分似乎并不在意.它失败了success.json(),因为如果有错误,则没有json.但如果出现错误,我希望它可以调用error =>... …
在 Angular 中,我们使用 HttpClient 进行 HTTP 调用,该调用返回可观察值,如果我们想使用 Promise,我们可以使用lastValueFrom/firstValueFrom.
假设我们有:
async getLast() {
const get$ = this.http.get(url);
const res1 = await lastValueFrom(get$);
}
async getFirst() {
const get$ = this.http.get(url);
const res2 = await firstValueFrom(get$);
}
Run Code Online (Sandbox Code Playgroud)
res1 和 res2 总是相等吗?正确使用的版本是什么?
我刚开始学习Angular.js.如何在Angular.js中重写以下代码?
var postData = "<RequestInfo> "
+ "<Event>GetPersons</Event> "
+ "</RequestInfo>";
var req = new XMLHttpRequest();
req.onreadystatechange = function () {
if (req.readyState == 4 || req.readyState == "complete") {
if (req.status == 200) {
console.log(req.responseText);
}
}
};
try {
req.open('POST', 'http://samedomain.com/GetPersons', false);
req.send(postData);
}
catch (e) {
console.log(e);
}
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的 -
function TestController($scope) {
$scope.persons = $http({
url: 'http://samedomain.com/GetPersons',
method: "POST",
data: postData,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
}).success(function (data, status, headers, config) {
$scope.data = data; // how do …Run Code Online (Sandbox Code Playgroud) 我有一个Angular应用程序,我想为404处理API端点.关键组件是这样的:
// app.js
var myApp = angular.module('myApp', ['ngRoute',]);
myApp.config( function ($httpProvider, $interpolateProvider, $routeProvider) {
$httpProvider.interceptors.push('httpRequestInterceptor');
$routeProvider
...
.when('/project/:projectId', {
templateUrl : 'partials/project_detail.tmpl.html',
controller: 'ProjectDetailCtrl',
resolve: {
project: function ($route, ConcernService) {
return ConcernService.get('projects/', $route.current.params.projectId);
},
}
});
});
// interceptors.js
myApp.factory('httpRequestInterceptor', function ($q, $location) {
return {
response: function(response){
return promise.then(
function success(response) {
return response;
},
function error(response) {
if(response.status === 404){
$location.path('/404');
return $q.reject(response);
}
else{
return $q.reject(response);
}
}
);
}
};
});
// services.js
myApp.factory('ConcernService', function …Run Code Online (Sandbox Code Playgroud) 我研究这个问题是一个荒谬的数字,并希望有人可以帮助诊断出错了什么.
我已经尝试过查看以下SO问题:(因为声誉,所以我不会发布超过2个链接,所以我只是包含了这些路径)
在众多......
我尝试过的事情: 我已经在网址的末尾添加了&callback = JSON_CALLBACK.我更改了配置设置,例如responseType:'JSON'.我还多次重新安排了http.jsonp请求,以确保它不是编程/文本(http({})和http.jsonp)
这是我正在尝试做的事情:使用角度jsonp请求 从routingnumbers.info/api/获取信息(服务器不允许CORS).我能够使用jQuery成功地提出请求,但我无法使用angular成功.
这是相应的测试小提琴: http ://jsfiddle.net/dqcpa/14/
如您所见,我收到两个错误:
但是如果你检查chrome devtools中的响应 - NETWORK,它是正确的:虽然我知道jsonp会返回jsonpfunction({"MyJson":"Data"})里面的响应,这是它被挂起的地方.
这是原始代码:
//$scope.number = '071000013';
var routingApiUrl = 'https://routingnumbers.herokuapp.com/api/data.json?rn=' + $scope.number;
$http({
method: 'jsonp',
url: routingApiUrl + '&callback=JSON_CALLBACK',
responseType: "json"
}).
success(function(data){
console.log('Success: ' + data);
}).
error(function(data){
console.log('Error: ' + data);
}); …Run Code Online (Sandbox Code Playgroud) angular-http ×10
angularjs ×6
angular ×4
javascript ×3
http ×1
jquery ×1
json ×1
jsonp ×1
observable ×1
rxjs ×1