这是我的代码 -
onSubmit(){
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let postParams = {
firstName : this.firstName,
lastName : this.lastName,
gender: this.myGender,
myDate : this.myDate
};
this.http.post("ip/member", {postParams, headers}).subscribe(data => {
console.log(data);
}, error => {
console.log(error); // Error getting the data
});
}
我没有很多使用Angular的经验,所以我不太清楚发生了什么,但这是在我的MS SQL数据库中插入空值。这就是Node API的样子:
app.post('/member', function(req, res) {
console.log("creating member\n");
request = new Request("INSERT INTO [dbo].[tblMemberInfo] VALUES (@firstName, @lastName, @gender, @dateOfBirth);", function(err) {
if (err) {
console.log(err);}
});
request.addParameter('firstName', TYPES.VarChar , req.query.firstName);
request.addParameter('lastName', TYPES.VarChar, req.query.lastName);
request.addParameter('gender', TYPES.VarChar, req.query.gender);
request.addParameter('dateOfBirth', TYPES.Date, req.query.dateOfBirth);
request.on('doneProc', function(rowCount, more) {
console.log('Member added');
});
connection.execSql(request);
})
我尝试使用Postman进行插入并且工作正常,而且我还确保我在Angular中的所有postParams都有值。任何人都知道发生了什么?
答案 0 :(得分:0)
只需更改此行:
this.http.post("ip/member", {postParams, headers})
致:
import { HttpHeaders } from '@angular/common/http';
const httpOptions = {
headers: new HttpHeaders({
'Content-Type' : 'application/x-www-form-urlencoded'
})
};
this.http.post("ip/member", postParams, httpOptions);
根据Angular Offical Doc:
post(url: string, body: any, options?: RequestOptionsArgs)
答案 1 :(得分:0)
我不认为你的问题与Angular有关。我看到你的nodeJS出错了。您无法使用req.query
。这是一个表格帖我相信所以表格将作为正文发布。我看到你正在使用快递。因此,您应该使用req.body
而不是req.query
。
注意:如果您不使用body-parser
您必须使用body-parser
快速中间件才能从POST
请求中解析正文。< / p>
第1步:npm install --save body-parser
第2步:在包含express的文件中添加。
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json())
希望它有所帮助!!