angular2-rc1 http.post 无法正常工作
angular2-rc1 http.post not working correctly
我正在创建一个 angular2 应用程序,其中我在我的服务中使用 http 来 POST
调用 mongoDB
。
当我第一次进行 POST
调用时,它工作正常,即条目被正确插入到数据库中,但是当我第二次发送数据时,它没有被插入。
如果我在第一次插入后重新加载页面,那么它工作正常。
我做了一些调试,发现在第二次请求时我的 req.body
是空白的。
这是我的代码:
page.service.ts
savePage(page: Object) {
this.headers.append('Content-Type', 'application/json');
let url = this.baseUrl+'/pm/pages/';
let data={};
data["data"]=page;
console.log(data); //this is printing both times correctly
//on second request data is blank where as it works correctly for first time
return this.http.post(url, JSON.stringify(data),{headers: this.headers})
.map((res: Response) => res.json()).catch(this.handleError);
}
这是节点服务中显示的 req.body 中的数据。
第一个请求:
body:{
data:{
name: 'wtwetwet',
desc: 'wetwetwetetwte',
isPublic: true,
createdBy: 'Bhushan'
}
}
第二次请求
body: {}
有任何输入吗?
它看起来更像是后端的东西。但是,您应该包含订阅此 http 调用的代码。
顺便问一下,你为什么要使用 RC1? Angular 2 现在在 RC5 上。
我终于意识到我的方法每次被调用时都会设置 content-type。
因此更改代码:
savePage(page: Object) {
this.headers.append('Content-Type', 'application/json');
let url = this.baseUrl+'/pm/pages/';
let data={};
data["data"]=page;
return this.http.post(url, JSON.stringify(data),{headers: this.headers})
.map((res: Response) => res.json()).catch(this.handleError);
}
至:
savePage(page: Object) {
this.headers=new Headers();
this.headers.append('Content-Type', 'application/json');
let url = this.baseUrl+'/pm/pages/';
let data={};
data["data"]=page;
return this.http.post(url, JSON.stringify(data),{headers: this.headers})
.map((res: Response) => res.json()).catch(this.handleError);
}
帮了我大忙。
实际上我们只需要在调用 rest 时设置一次 headers,但在我的代码中它已经设置好了,因此创建新的 Headers Object 帮助我清除了之前设置的任何配置。
感谢大家的帮助。
我正在创建一个 angular2 应用程序,其中我在我的服务中使用 http 来 POST
调用 mongoDB
。
当我第一次进行 POST
调用时,它工作正常,即条目被正确插入到数据库中,但是当我第二次发送数据时,它没有被插入。
如果我在第一次插入后重新加载页面,那么它工作正常。
我做了一些调试,发现在第二次请求时我的 req.body
是空白的。
这是我的代码:
page.service.ts
savePage(page: Object) {
this.headers.append('Content-Type', 'application/json');
let url = this.baseUrl+'/pm/pages/';
let data={};
data["data"]=page;
console.log(data); //this is printing both times correctly
//on second request data is blank where as it works correctly for first time
return this.http.post(url, JSON.stringify(data),{headers: this.headers})
.map((res: Response) => res.json()).catch(this.handleError);
}
这是节点服务中显示的 req.body 中的数据。
第一个请求:
body:{
data:{
name: 'wtwetwet',
desc: 'wetwetwetetwte',
isPublic: true,
createdBy: 'Bhushan'
}
}
第二次请求
body: {}
有任何输入吗?
它看起来更像是后端的东西。但是,您应该包含订阅此 http 调用的代码。
顺便问一下,你为什么要使用 RC1? Angular 2 现在在 RC5 上。
我终于意识到我的方法每次被调用时都会设置 content-type。
因此更改代码:
savePage(page: Object) {
this.headers.append('Content-Type', 'application/json');
let url = this.baseUrl+'/pm/pages/';
let data={};
data["data"]=page;
return this.http.post(url, JSON.stringify(data),{headers: this.headers})
.map((res: Response) => res.json()).catch(this.handleError);
}
至:
savePage(page: Object) {
this.headers=new Headers();
this.headers.append('Content-Type', 'application/json');
let url = this.baseUrl+'/pm/pages/';
let data={};
data["data"]=page;
return this.http.post(url, JSON.stringify(data),{headers: this.headers})
.map((res: Response) => res.json()).catch(this.handleError);
}
帮了我大忙。 实际上我们只需要在调用 rest 时设置一次 headers,但在我的代码中它已经设置好了,因此创建新的 Headers Object 帮助我清除了之前设置的任何配置。
感谢大家的帮助。