我有以下代码:
var headers = new Headers();
// headers.append('Content-Type', 'application/json');
headers.append('Content-Type', 'application/x-www-form-urlencoded');
this.http.post(
'http://192.168.1.45:3000/testrestapi',
{headers: headers}
).map((res => res.json())
.subscribe(data => {
// we've got back the raw data, now generate the core schedule data
// and save the data for later reference
this.data = data;
console.log('Friends Provider was a success!');
console.log(JSON.stringify(data));
resolve(this.data);
},
(err)=>{
console.log('Error in Friends Provider!');
},
()=>{
console.log('Friends Provider network call has ended!');
}
)
)
});
代码编译没有错误,但我的ide中出现以下错误:
我正在关注此文档:https://angular.io/docs/js/latest/api/http/Http-class.html。它显示了如何将HTTP用于GET,但不用于POST。似乎我错过了我的标题的类型,我不知道该放在这里,它抱怨订阅方法的类型,再次我不知道该放什么,因为我遵循文档,它似乎没有有什么不同吗?
答案 0 :(得分:1)
您已在代码的第2行和第3行导入Http模块2次,其中一行是冗余的。
http post的API是:
post(url: string, body: string, options?: RequestOptionsArgs) : Observable<Response>
https://angular.io/api/http/Http 中的
它期望一个JSON.stringified正文作为第二个参数,但你推动的标题选项应该是第三个参数。
我也建议使用
headers.set('Content-Type', 'application/json');
而不是append
。
此外,您在数据之后缺少订阅中的paranthesis。
.subscribe(
(data) => {
console.log('Do something with data here \n',data);
}
);
答案 1 :(得分:0)
var headers = new Headers();
// headers.append('Content-Type', 'application/json');
headers.append('Content-Type', 'application/x-www-form-urlencoded');
this.http.post(
'http://192.168.1.45:3000/testrestapi',
{headers: headers}
)
.map((res => res.json())
.subscribe(data =>
{
this.data = data;
console.log('Friends Provider was a success!');
console.log(JSON.stringify(data));
//resolve(this.data);
},
(err)=>{
console.log('Error in Friends Provider!');
},
()=>{
console.log('Friends Provider network call has ended!');
}
);
答案 2 :(得分:0)
代码编译正常,没有错误,
仅仅因为你获得了有效的JavaScript 并不意味着它编译时没有错误。这实际上是TypeScript 功能(请参阅why typescript)。
您在错误中看到的错误是编译器错误