我似乎无法诊断为什么我无法在Angular 2 Typescript应用程序中发送成功的HTTP请求。我通过Postman成功发送POST请求,但前端似乎对链接到后端感到不满......没有错误,后端也没有响应。请帮忙!
我在C9环境中工作。
这是我目前的实施方式:
import {Component} from 'angular2/core';
import {MessageBody} from '../message-body/message-body';
import {Http, HTTP_PROVIDERS, Headers} from 'angular2/http';
@Component({
selector: 'signup',
template: require('app/signup/signup.html'),
styles: [require('app/signup/signup.css')],
viewProviders: [HTTP_PROVIDERS],
providers: []
})
export class Signup {
model = new MessageBody(
'',
'',
'',
'');
constructor(public http: Http) {
}
onSubmit() {
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
this.http.post('/email', JSON.stringify(this.model), {headers: headers})
.map(res => console.log(res.json()));
}
}
这是服务器上的端点:
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.post('/email', sendEmail);
app.use(express.static(__dirname +'/../dist'));
app.listen(process.env.PORT, listen);
我尝试过/email
,http://localhost:8080/email
,https://{appName}-{username}.c9users.io/email
,但都无济于事!
我做错了什么?我很感激帮助!
编辑:蒂埃里已经在这里回答,所以这是一个骗局。 angular2: http post not executing答案 0 :(得分:3)
内容类型与您为POST方法提供的内容不匹配。
如果您希望使用网址编码表单,则需要以这种方式更新代码:
onSubmit() {
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
var content = new URLSearchParams();
content.set('somefield', this.model.somefield);
(...)
this.http.post('/email', content.toString(), {headers: headers})
.map(res => console.log(res.json()));
}
如果要发送JSON内容,只需更改Content-Type
标题的值:
onSubmit() {
var headers = new Headers();
headers.append('Content-Type', 'application/json');
this.http.post('/email', JSON.stringify(this/model), {headers: headers})
.map(res => console.log(res.json()));
}
此外,我认为您的端点不在同一台计算机上,除非您通过Express应用程序提供此类端点:
app.use(express.static('public'));