Javascript 如何在Angular 2中触发ajax请求?
我在Angular 2中定义了如下服务:Javascript 如何在Angular 2中触发ajax请求?,javascript,angular,Javascript,Angular,我在Angular 2中定义了如下服务: import { Inject } from 'angular2/angular2'; import { Http ,Headers , HTTP_PROVIDERS } from 'angular2/http'; export interface CourseInterface { courseId: number, coursePrice: number, authorName: string } export class
import { Inject } from 'angular2/angular2';
import { Http ,Headers , HTTP_PROVIDERS } from 'angular2/http';
export interface CourseInterface {
courseId: number,
coursePrice: number,
authorName: string
}
export class CourseDetailsService {
http: Http;
constructor(@Inject(Http) Http) {
console.log(Http)
this.http = Http;
}
load() {
console.log("came here in service")
var headers = new Headers();
headers.append('Authorization', <my username password>);
this.http.get('https://some.api',{
headers : headers
}).map(res => console.log("Response came!!!"))
console.log("done . . .")
}
}
import {CourseInterface, CourseDetailsService} from '../services/course';
@Component({
selector: 'dashboard',
viewBindings: [CourseDetailsService]
})
@View({
template: `
<h1>Dashboard page laoded</h1>
`
})
export class Dashboard {
constructor(service: CourseDetailsService) {
service.load();
}
}
但在我的chrome网络选项卡中,我无法看到任何发送到指定url的请求。我在哪里犯错
我正在使用Angular 2 Alpha 47,基本上是触发请求本身的部分,它是订阅,所以要使它工作,你必须添加它
//服务
加载(){
var headers=新的headers();
headers.append('Authorization',);
返回此.http.get('https://some.api',{
标题:标题
}).map(res=>console.log(“响应来了!!!”)
}
//组成部分
//“订阅”触发请求!
service.load().subscribe((result)=>/*使用result*/)执行某些操作;
触发请求的部分是订阅
。所以请返回这个.http.get().map()
,然后在您的组件中执行service.load().subscribe((结果)=>…)
@EricMartinez:那么它基本上返回一个可观察的
?我需要订阅并获取我的流吗?@Ants你说得对D@EricMartinez:谢谢,我对这个感到困惑。你可以给出答案,我可以接受。:完全不可能。如果说我有一系列独特的请求,比如/something
,/other
,在这些情况下,我如何返回可观察的对象,以便消费者能够捕获它们?我的方法是创建单独的方法,如:loadSomething
,loadOther
,其中第一个案例将请求https://some.api/something
。其余部分看起来像答案:service.loadSomething().subscribe(…)
。这对您有意义吗?另一种方法是:向load()
添加一个参数,比如load(query){返回http.get(query).subscribe(…)}
。这种方法比上面的方法好。谢谢,我也在考虑同样的方法。这种方法可以进行同步调用吗?例如,我需要服务器验证访问页面的用户权限,我希望此调用是同步的,并且不添加*ngIf以在调用结束之前不显示视图,如果我可以使用http服务,我不希望发出普通的ajax请求
came here in service
done . . . .