Angular HTTPClient POST 正文未发送
Angular HTTPClient POST body not sending
目前我正在尝试 POST 从 angular 前端到 php 脚本 运行 的姓名、电子邮件和消息,然后在同一 nginx 服务器中运行phpmailer 发送包含姓名、电子邮件和消息的电子邮件。这是到目前为止的代码:
import { Component, OnInit } from '@angular/core';
import { Email } from './email';
import {ContactService} from './contact.service';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {NgForm} from '@angular/forms';
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
};
const email = new Email('', '', '');
@Component({
selector: 'app-contact',
templateUrl: './contact.component.html',
styleUrls: ['./contact.component.css'],
providers: [ContactService]
})
export class ContactComponent implements OnInit {
email = new Email('', '', '');
constructor(private http: HttpClient) { }
sendEmail(form: NgForm) {
const value = form.value;
const senderName = value.name;
const senderEmail = value.email;
const senderMessage = value.message;
this.sendMail(senderName, senderEmail, senderMessage);
}
sendMail(senderName, senderEmail, senderMessage) {
console.log(senderName + ' ' + senderEmail + ' ' + senderMessage);
this.http.post('https://ruffstuffcostumes.tk/assets/scripts/email.php',
{
name: senderName,
email: senderEmail,
message: senderMessage,
},
httpOptions
)
.subscribe(
(val) => {
console.log('POST call successful value returned in body',
val);
},
response => {
console.log('POST call in error', response);
},
() => {
console.log('The POST observable is now completed.');
});
}
ngOnInit() {
}
}
当我 运行 POST 通过 postman 请求检查它时,它 运行 非常好并发送了包含所需元素的电子邮件,但是当我用这个脚本执行了一个查询,即使 console.log(senderName + ' ' + senderEmail + ' ' + senderMessage)
确实显示了值,它似乎根本没有 post 它们在正文中,我得到的只是这样一个事实,即使已发送邮件,邮件正文中没有任何这些值。
这可能是跨源问题(如果是的话,最好的解决方法是什么?),还是我只是犯了一些愚蠢的错误?
只是为了完整性。我通过切换到发送 JSON 数据并在 php 端
解析它来解决问题
目前我正在尝试 POST 从 angular 前端到 php 脚本 运行 的姓名、电子邮件和消息,然后在同一 nginx 服务器中运行phpmailer 发送包含姓名、电子邮件和消息的电子邮件。这是到目前为止的代码:
import { Component, OnInit } from '@angular/core';
import { Email } from './email';
import {ContactService} from './contact.service';
import {HttpClient, HttpHeaders} from '@angular/common/http';
import {NgForm} from '@angular/forms';
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
};
const email = new Email('', '', '');
@Component({
selector: 'app-contact',
templateUrl: './contact.component.html',
styleUrls: ['./contact.component.css'],
providers: [ContactService]
})
export class ContactComponent implements OnInit {
email = new Email('', '', '');
constructor(private http: HttpClient) { }
sendEmail(form: NgForm) {
const value = form.value;
const senderName = value.name;
const senderEmail = value.email;
const senderMessage = value.message;
this.sendMail(senderName, senderEmail, senderMessage);
}
sendMail(senderName, senderEmail, senderMessage) {
console.log(senderName + ' ' + senderEmail + ' ' + senderMessage);
this.http.post('https://ruffstuffcostumes.tk/assets/scripts/email.php',
{
name: senderName,
email: senderEmail,
message: senderMessage,
},
httpOptions
)
.subscribe(
(val) => {
console.log('POST call successful value returned in body',
val);
},
response => {
console.log('POST call in error', response);
},
() => {
console.log('The POST observable is now completed.');
});
}
ngOnInit() {
}
}
当我 运行 POST 通过 postman 请求检查它时,它 运行 非常好并发送了包含所需元素的电子邮件,但是当我用这个脚本执行了一个查询,即使 console.log(senderName + ' ' + senderEmail + ' ' + senderMessage)
确实显示了值,它似乎根本没有 post 它们在正文中,我得到的只是这样一个事实,即使已发送邮件,邮件正文中没有任何这些值。
这可能是跨源问题(如果是的话,最好的解决方法是什么?),还是我只是犯了一些愚蠢的错误?
只是为了完整性。我通过切换到发送 JSON 数据并在 php 端
解析它来解决问题